3

我有一個進度對話框,我需要解僱然後完成應用程序。 我做它的方式是這樣的:正確解僱進度對話框

new AlertDialog.Builder(MainActivity.this) 
          .setMessage("There has been a problem.") 
          .setPositiveButton("OK", 
            new DialogInterface.OnClickListener() { 
             public void onClick(
               DialogInterface dialog, 
               int which) { 
              dialog.dismiss(); 
              finish(); 
             } 
            }).show(); 

不過,我總是得到著名的錯誤:

Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running? 
05-23 16:56:44.573: ERROR/AndroidRuntime(2494):  at android.view.ViewRoot.setView(ViewRoot.java:505) 
05-23 16:56:44.573: ERROR/AndroidRuntime(2494):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:200) 
05-23 16:56:44.573: ERROR/AndroidRuntime(2494):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:114) 
05-23 16:56:44.573: ERROR/AndroidRuntime(2494):  at android.view.Window$LocalWindowManager.addView(Window.java:424) 
05-23 16:56:44.573: ERROR/AndroidRuntime(2494):  at android.app.Dialog.show(Dialog.java:241) 
05-23 16:56:44.573: ERROR/AndroidRuntime(2494):  at android.app.ProgressDialog.show(ProgressDialog.java:107) 
05-23 16:56:44.573: ERROR/AndroidRuntime(2494):  at android.app.ProgressDialog.show(ProgressDialog.java:90) 
05-23 16:56:44.573: ERROR/AndroidRuntime(2494):  at android.app.ProgressDialog.show(ProgressDialog.java:85) 

我怎麼能關閉它沒有問題?我做對了嗎?

非常感謝。

編輯:我可以完美展現它,甚至當解僱它時,用戶也沒有看到任何錯誤,但在我的LogCat中,我可以看到那個令人討厭的錯誤。

+0

你最初能夠顯示它嗎? – ngesh 2013-03-27 09:00:31

+1

好像您在創建對話框時,您的活動不是主動/可見的。你不能將你的活動作爲你的對話框的上下文,如果它不會出現在對話框中時 – 2013-03-27 09:03:24

+0

@ngesh我編輯了我的問題以回答你 – noloman 2013-03-27 09:04:05

回答

1

我還沒有測試過,儘管它應該可以工作。但是,作爲替代方案,您可以在對話的onClick和您的活動的onStop致電dialog.dismiss()中致電finish()

在onStop中調用解除將避免窗口泄漏警告消息。

+0

這意味着我的對話框需要是一個類變量,因爲我需要在onStop方法中訪問它(以便解除它),不是嗎? – noloman 2013-03-27 09:14:13

+0

是的,在類/全局級別定義對話框對象 – waqaslam 2013-03-27 09:15:05