2

時崩潰。當我打開一個對話框並且設備旋轉時,應用程序崩潰,我的應用程序中的Android對話框在旋轉

我以爲我已經盡一切努力處理旋轉自己

在我所有的活動我都這使在清單

android:configChanges="keyboardHidden|orientation" 
     android:screenOrientation="fullSensor" 

和有問題的對話我有這樣的代碼

if(!WebViewActivity.this.isFinishing() && dialog != null && dialog.isShowing()){ 
       dialog.dismiss(); 
    } 

但是,如果在設備旋轉時打開對話框,我仍會收到此崩潰消息

java.lang.IllegalArgumentException: View not attached to window manager 
at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:383) 
at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:285) 
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:79) 
at android.app.Dialog.dismissDialog(Dialog.java:323) 
at android.app.Dialog.dismiss(Dialog.java:306) 
at bundle.android.views.WebViewActivity$1.onPageFinished(WebViewActivity.java:133) 
at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:323) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5039) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
at dalvik.system.NativeStart.main(Native Method) 

或此錯誤消息

android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running? 

這個例子是關於名爲WebViewActivity的活動,但我有同樣的問題

許多其他活動我不覺得有必要使用onConfigurationChanged生命週期方法,但任何解決方案將受到歡迎!

+0

你是笑從AsyncTask或非UI線程的對話? – 2013-03-15 16:22:14

+1

看看http://blog.doityourselfandroid.com/2010/11/14/handling-progress-dialogs-and-screen-orientation-changes/ – 2013-03-15 16:52:54

+0

@MehulJoisar在onPreExecute和解僱onPostExecute,所以這些都是所有UI線程操作,但旋轉發生在非UI線程正在運行 – CQM 2013-03-15 19:06:46

回答

1

答案就像是我用,藉助Android API級別的額外參數screenSize 13+

android:configChanges="keyboardHidden|orientation|screenSize" 
android:screenOrientation="fullSensor" 

這已經成爲每一個活動中所做一起使用

android:configChanges="keyboardHidden|orientation" 
android:screenOrientation="fullSensor" 

顯示對話框可能出現問題的位置,以及放入

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

} 
相關問題