出现场景
第一次启动程序可以正常运行,随便切换tab也不会有问题,第二次必崩
引起BUG的原因是
当fragment移动到分离状态的时候,会重置内部状态,但是并没有重置子类管理器(这是类库当前版本的错误),这会让fragment复位之后使它和activity不连接导致一个exception
解决办法是
添加 下面的代码对于每一个fragment在onDetach()方法里
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);
}
}
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);
}
}