android Java.lang.IllegalStateException: No activity
我出现这个异常的原因比较坑,ViewPager持有的FirstFragment内部需要维护三个Fragment,所以内部也需要用到FragmentManager,用于在setUserVisibleHint方法里获取了FragmentManager的实例,导致上级Fragment的mChildFragmentManager 这个实例被赋值,进入了不改进入的分发逻辑。
Fragment.java
@CallSuper
public void onCreate(@Nullable Bundle savedInstanceState) {
mCalled = true;
restoreChildFragmentState(savedInstanceState);
if (mChildFragmentManager != null
&& !mChildFragmentManager.isStateAtLeast(Fragment.CREATED)) {
mChildFragmentManager.dispatchCreate();
}
}
而这个mChildFragmentManager没有绑定对应的宿主host所以报了crash
FragmentManager.java
void moveToState(int newState, boolean always) {
if (mHost == null && newState != Fragment.INITIALIZING) {
throw new IllegalStateException("No activity");
}
if (!always && newState == mCurState) {
return;
}
mCurState = newState;
遇到同样问题的同学可以看看自己获取FragmentManager的地方是否合理