首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DialogFragment onStart的BadTokenException

DialogFragment onStart的BadTokenException
EN

Stack Overflow用户
提问于 2018-10-24 19:34:40
回答 1查看 289关注 0票数 0

我浏览了100篇关于BadTokenException的帖子,但似乎每次都会有另一个原因导致这种情况发生,在我的例子中,我有时会看到这个堆栈跟踪(并不总是发生/不知道如何重现):

代码语言:javascript
复制
Caused by android.view.WindowManager$BadTokenException: Unable to add window – token android.os.BinderProxy@2a5a564 is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:602)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:322)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:98)
at android.app.Dialog.show(Dialog.java:319)
at android.support.v4.app.DialogFragment.onStart(SourceFile:434)
at com.mycompany.myapp.ui.about.WhatsNewDialog.onStart(SourceFile:89)
at android.support.v4.app.Fragment.performStart(SourceFile:2372)
at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1467)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(SourceFile:1759)
at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1827)
at android.support.v4.app.BackStackRecord.executeOps(SourceFile:797)
at android.support.v4.app.FragmentManagerImpl.executeOps(SourceFile:2596)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(SourceFile:2383)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(SourceFile:2338)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(SourceFile:2245)
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(SourceFile:3248)
at android.support.v4.app.FragmentManagerImpl.dispatchResume(SourceFile:3212)
at android.support.v4.app.FragmentController.dispatchResume(SourceFile:217)
at android.support.v4.app.FragmentActivity.onResumeFragments(SourceFile:509)
at android.support.v4.app.FragmentActivity.onPostResume(SourceFile:498)
at android.support.v7.app.AppCompatActivity.onPostResume(SourceFile:171)
at android.app.Activity.performResume(Activity.java:6415)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3146)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3268)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520)
at android.app.ActivityThread.access$900(ActivityThread.java:179)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1380)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5560)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)

根据我对跟踪的理解,异常直接发生在DialogFragment的onStart中,这是应用程序本身唯一显示的代码行,在那一行只调用了super.onStart(),这个方法中没有更多的东西,所以这真的很混乱,你理解了吗?在这种情况下,是否也可以使用"activity.isFinishing()“解决方案?在堆栈跟踪中,我甚至看不到调用新的WhatsNewDialog().show()的行,所以这可能真的会在以某种方式恢复对话框时发生,欢迎任何提示。

EN

回答 1

Stack Overflow用户

发布于 2018-10-24 21:40:04

它实际上会给你一个错误。

您正在从非活动活动启动DialogFragment。因此,您要么在启动dialogFragment后立即完成该活动,要么使用活动的死版本或内存泄漏版本启动该活动。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52967950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档