2013-04-11 58 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

相關問題