java.lang.IllegalStateException: No activity
2016-01-06 17:37
411 查看
错误提示:
java.lang.IllegalStateException: No activity
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1075)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1070)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1861)
at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1474)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:931)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
.......
这个问题是在解决上一篇文章(http://blog.csdn.net/leewenjin/article/details/19409863)中指出的问题后出现的。问题解决方法是参考文章:
http://stackoverflow.com/questions/15207305/getting-the-error-java-lang-illegalstateexception-activity-has-been-destroyed
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()
[java] view
plaincopy
@Override
public 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);
}
}
其中的Field 是
java.lang.reflect.Field
引起bug的原因
If you look at the implementation of Fragment, you'll see that when moving to the detached state, it'll reset its internal state. However, it doesn't reset mChildFragmentManager (this is a bug in the current version of the support library). This causes it to
not reattach the child fragment manager when the Fragment is reattached, causing the exception you saw.
java.lang.IllegalStateException: No activity
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1075)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1070)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1861)
at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1474)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:931)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
.......
这个问题是在解决上一篇文章(http://blog.csdn.net/leewenjin/article/details/19409863)中指出的问题后出现的。问题解决方法是参考文章:
http://stackoverflow.com/questions/15207305/getting-the-error-java-lang-illegalstateexception-activity-has-been-destroyed
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()
[java] view
plaincopy
@Override
public 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);
}
}
其中的Field 是
java.lang.reflect.Field
引起bug的原因
If you look at the implementation of Fragment, you'll see that when moving to the detached state, it'll reset its internal state. However, it doesn't reset mChildFragmentManager (this is a bug in the current version of the support library). This causes it to
not reattach the child fragment manager when the Fragment is reattached, causing the exception you saw.
相关文章推荐
- 常用的Java文件操作
- java.lang.IllegalStateException: Recursive entry to executePendingTransactions
- spring 单元测试
- java课程体系mybaties的学习
- (转)java并发编程: 彻底理解ThreadLocal
- java接口可以继承多个接口
- Fastjson是一个Java语言编写的高性能功能完善的JSON库。
- Java序列化与反序列化资料
- Java学习第一天面向对象语言的学习
- [Java]入门遇到的问题
- 【Java学习笔记】—— Servlet的转发与重定向
- java中如何在eclipse里查看一个接口的所有实现类?
- Maven项目遇到java.lang.NoClassDefFoundError: net/sf/ehcache/CacheException
- Java开源库
- Java Web开发之You don’t have permission to access /~{username}/ on this server解决方案
- Spring mvc的整体流程(二)
- Java中hashCode的作用
- 给jdk写注释系列之jdk1.6容器(10)-Stack&Vector源码解析
- Java5 并发学习
- Java中的protected访问修饰符