2013-04-11 56 views
1

我把我的活动放在了childview中,现在我无法从我的活动和适配器中显示对话框。在我的logCat我越来越

04-11 12:39:59.823: E/AndroidRuntime(12831): FATAL EXCEPTION: main 
04-11 12:39:59.823: E/AndroidRuntime(12831): android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running? 
04-11 12:39:59.823: E/AndroidRuntime(12831): at android.view.ViewRootImpl.setView(ViewRootImpl.java:513) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:301) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at android.view.Window$LocalWindowManager.addView(Window.java:537) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at android.app.Dialog.show(Dialog.java:278) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at android.app.AlertDialog$Builder.show(AlertDialog.java:932) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at com.myapp.functions.DownloadsDetailsAdapter$1$2.run(DownloadsDetailsAdapter.java:148) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at android.app.Activity.runOnUiThread(Activity.java:4170) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at com.myapp.functions.DownloadsDetailsAdapter$1.onClick(DownloadsDetailsAdapter.java:139) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at android.view.View.performClick(View.java:3511) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at android.view.View$PerformClick.run(View.java:14105) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at android.os.Handler.handleCallback(Handler.java:605) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at android.os.Looper.loop(Looper.java:137) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at android.app.ActivityThread.main(ActivityThread.java:4440) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at java.lang.reflect.Method.invokeNative(Native Method) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at java.lang.reflect.Method.invoke(Method.java:511) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) 
04-11 12:39:59.823: E/AndroidRuntime(12831): at dalvik.system.NativeStart.main(Native Method) 

这里是我如何显示对话框的一个例子。

AlertDialog.Builder builder = new AlertDialog.Builder(
          activity); 
        builder.setMessage(R.string.are_you_sure) 
          .setPositiveButton(R.string.yes, 
            dialogClickListener) 
          .setNegativeButton(R.string.no, dialogClickListener) 
          .show(); 

注意:此代码在我进行更改之前正在运行。我应该在新的runnable中运行它,但如果我必须这样做,有人可以告诉我该怎么做?

+2

实例'ActivityA'的实例(或已经关闭的实例'ActivityX') – Selvin 2013-04-11 10:58:05

+0

@Selvin你可以给我一个示例解决方案.. – 2013-04-11 10:59:38

+0

这很难解释...但你可以尝试在方法调用中传递Activity,而不是使用存储在'活动'var ... fx。 :如果你有像'void static DoSomething(String param1)'使用'void static DoSomething(Activity activity,String param1)'方法''而不是 – Selvin 2013-04-11 11:04:07

回答

8

我也遇到了同样的问题。我用这个标签栏。只需使用getParent()而不是youractivity.this

我希望这会有所帮助。

+0

非常感谢你分享information.this是使用完整的我的应用程序。 – Narasimha 2013-06-13 07:44:50

+0

@Narasimha很高兴帮助你。 – Umesh 2013-06-13 09:38:01

1

activity对象必须是当前显示在屏幕上的活动。 如果它已经暂停或没有建立显示,它会给出这个错误。

0

在这里看到ActivityGroup的答案。

对于ActivityGroup的子活动,当我们在子活动中使用Context(例如PrompDialog)时,我们无法确定它是否一直存在并存在。 例如:

mPromptDialog = new LoginPromptDialog(this);//this is used as Context 
//But when we use this context it may be destroyed. 
//So this is the parent instance 
mPromptDialog = new LoginPromptDialog(this.getParent()); 

偏好:`的是activity`不再有效?FX:你叫从`ActivityX`实例和VAR`activity`设置一些功能 http://www.cnblogs.com/kaima/archive/2011/08/04/2127813.html

相关问题