Java.lang.IllegalStateException Activity has been destroyed

来源:互联网 发布:有什么好玩的游戏知乎 编辑:程序博客网 时间:2024/06/05 22:40

http://www.cnblogs.com/xueqiang911226/p/3793427.html


03-04 12:01:05.468: E/AndroidRuntime(2474): FATAL EXCEPTION: mainjava.lang.IllegalStateException: Activity has been destroyed     at android.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1345)     at android.app.BackStackRecord.commitInternal(BackStackRecord.java:597)     at android.app.BackStackRecord.commitAllowingStateLoss(BackStackRecord.java:579)     at android.support.v13.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143)     at android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:892) 

bug出现的原理问题及解决方法是

This seems to be a bug in the newly added support for nested fragments. Basically, the child FragmentManager ends up with a broken internal state when it is detached from the activity. A short-term workaround that fixed it for me is to add the following to onDetach() of every Fragment which you call getChildFragmentManager() on:

解决方法重写onDetach()

@Overridepublic void onDetach() {    super.onDetach();    try {        Field childFragmentManager = Fragment.class.getDeclaredField("mChildFragmentManager");        childFragmentManager.setAccessible(true);        childFragmentManager.set(this, null);    } catch (NoSuchFieldException e) {        throw new RuntimeException(e);    } catch (IllegalAccessException e) {        throw new RuntimeException(e);    }}

问题解决方法是参考文章:

http://stackoverflow.com/questions/15207305/getting-the-error-java-lang-illegalstateexception-activity-has-been-destroyed


end

阅读全文
0 0
原创粉丝点击