2012-12-18 48 views
0

当我在应用程序中创建ProgressDialog时,出现BadTokenException错误。我试着阅读关于这个问题的一些文章,但我仍然无法真正了解它的原因。我点击一个按钮后调用对话框功能。BadTokenException无法添加窗口(ProgressDialog)

protected Dialog onCreateDialog(int id) { 
    switch (id) { 
    case DIALOG_LOADING: 
     dialog = new Dialog(this, android.R.style.Theme_Translucent);   
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     dialog.setContentView(R.layout.loading); 
     break; 


    default: 
     dialog = null; 
     break; 
    } 
    return dialog; 
}; 

上面的代码是我的进度对话框代码。我只是这样称呼它showDialog(DIALOG_LOADING);任何人都可以好好告诉我是什么原因造成的,以及如何解决这个问题?任何意见将不胜感激。

12-18 12:12:39.250: E/AndroidRuntime(7654): FATAL EXCEPTION: main 
12-18 12:12:39.250: E/AndroidRuntime(7654): android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running? 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at android.view.ViewRoot.setView(ViewRoot.java:532) 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:200) 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:114) 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at android.view.Window$LocalWindowManager.addView(Window.java:424) 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at android.app.Dialog.show(Dialog.java:241) 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at android.app.Activity.showDialog(Activity.java:2566) 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at android.app.Activity.showDialog(Activity.java:2524) 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at com.fl.wbillboard.Web_Input$1.onClick(Web_Input.java:128) 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at android.view.View.performClick(View.java:2538) 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at android.view.View$PerformClick.run(View.java:9152) 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at android.os.Handler.handleCallback(Handler.java:587) 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at android.os.Handler.dispatchMessage(Handler.java:92) 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at android.os.Looper.loop(Looper.java:130) 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at android.app.ActivityThread.main(ActivityThread.java:3687) 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at java.lang.reflect.Method.invoke(Method.java:507) 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842) 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
12-18 12:12:39.250: E/AndroidRuntime(7654):  at dalvik.system.NativeStart.main(Native Method) 
+0

可以告诉你的logcat ... –

+0

肯定。我应该把它放进去。我的不好。我已经将它包含在问题中。 –

+0

'Web_Input.java:128'是什么行?调用onCreateDialog方法? –

回答

1

你必须使用活动的作秀对话框reffrence ..

使用本的new Dialog(activity_name.this, android.R.style.Theme_Translucent);代替new Dialog(this, android.R.style.Theme_Translucent);

case DIALOG_LOADING: 
     dialog = new Dialog(activity.this, android.R.style.Theme_Translucent);   
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     dialog.setContentView(R.layout.loading); 
     break; 
+0

谢谢你的回复。我想也许我应该更好地包含activity_name。但仍然在这种情况下,它不能解决我的问题。任何想法可能会导致错误? –

+1

是这个活动是任何其他活动的孩子,如果是的话,然后使用getParent()而不是activity.this –

+0

让我看看你的完整代码.. –

相关问题