2010-09-12 10 views
17

Bir AsyncTask nesnesinin onPreExecute yönteminde ProgressDialog yöntemini gösteriyorum ve onPostExecute yönteminde ProgressDialog işlemini iptal ediyorum. doInBackground yönteminde kullanıcı kaydı için bir HTTP isteği yapıyorum. Ekran yönlendirme değişikliklerine izin vermek istiyorum. doInBackground yöntemi hala çalışırken yönlendirmeyi değiştirdiğimde, 'IllegalArgumentException: Görünüm pencere yöneticisine eklenmemiş' ve 'RegisterScreen penceresi sızdırılmış ...' gibi her türlü eğlenceli hatayı alıyorum 'Bir ProgressDialog gösteriliyorsa yönelim değişikliği nasıl yapılır?

Nasıl düzgün devam edebilirim Bir yönelim değiştikten sonra ProgressDialog gösteriliyor? Ya da, kullanıcı kayıtlarını göndermeyi talep ettikten sonra yönlendirme değişikliğini nasıl devre dışı bırakabilirim?

+0

[1] Bunun Aradığınız çözüm olduğunu düşünüyorum [burada cevaptır]. [1]: http://stackoverflow.com/a/3821998/1665247 – dvrm

cevap

15

AndroidManifest.xml dosyasındaki Activity öğenize bu özniteliği android:configChanges="orientation" eklemeye çalışın.

+0

bunu yaptı! aptalca, bunun tamir olduğunu bilmeliydim. – binnyb

+8

API level 13 ve üstünü hedeflemek için buna "screenSize" eklemek zorunda kaldım. Aksi takdirde bu ortamlar için çalışmaz. android: configChanges = "orientation | screenSize" – notmystyle

+0

ScreenSize ipucu için teşekkürler! "Oryantasyon | klavye" vardı ve aniden artık işe yaramadı. Bu mükemmel çalışıyor, teşekkürler! – TSGames

6

Yönlendirme değişikliklerini ProgressDialog'u gösterdiğiniz sırada devre dışı bırakmayı deneyebilirsiniz.

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); 

ve tamamlanmasından sonra geri etkinleştirmek: başında

yapmak bu yardımcı olur

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); 

Umut. Herkes uygun bir çözüm varsa

(ben de düzgün tasarrufu ve etkinlik durumuna geri gelir aktivite yaşam döngüsünü ele istiyorum

+2

sorun yönlendirme değiştirme değildir. Etkinliklerinizi yok eden ve yeniden yaratan etkinlik yaşam döngüsü nedeniyle bu sorunları görüyorsunuz. Yönlendirme değişikliklerinin önlenmesi, yaşam döngüsünün bu özel örneğini engeller, ancak aynı sorun, kullanıcı ProgressDialog sırasında 'Ana Sayfa'ya bastığında ve geri döndüğünde kırpılır. Etkinliğiniz herhangi bir zamanda kapanacak ve yeniden başlayacak şekilde tasarlanmalıdır. – Josh

+0

AsyncTask benim etkinliğimde değilse ... Birçok etkinlik sınıfında ortak olan başka bir sınıf dosyasında. O zaman setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_NOSENSOR) nasıl edinebilirim; – Debopam

+0

Harika ama oryantasyonu kilitlemek için ActivityInfo.SCREEN_ORIENTATION_LOCKED özellikle manzarada, benim için daha iyi çalışıyor. – BlueHazard

-1

Sizin Manifest

<activity android:label="@string/app_name" 
     android:configChanges="orientation|keyboardHidden" 
     android:name=".your.package"> 
2

aşağıdaki kodu kullanabilirsiniz Benim durumumda uygulama Manifest.xml

<activity android:label="@string/app_name" android:configChanges="keyboardHidden|orientation|screenSize" android:name=".your.package"/>

1

aktivite etiketinde bu ekle ben kullandım

android:configChanges="orientation" 

ama benim için çalışmadı

çalışıyor takiben ince

<activity android:name=".MyActivity" 
      android:configChanges="orientation|screenSize|screenLayout"> 
</activity>