Android FindFragmentById未返回null
我有以下代码: //对碎片进行压缩Android FindFragmentById未返回null,android,fragment,Android,Fragment,我有以下代码: //对碎片进行压缩 FichaAlumnoFragment frag=(FichaAlumnoFragment)getSupportFragmentManager().findFragmentById(R.id.details_students_frag); if (frag!=null) { Log.i(this.getClass().getSimpleName(),"Tengo dos fragmentos");
FichaAlumnoFragment frag=(FichaAlumnoFragment)getSupportFragmentManager().findFragmentById(R.id.details_students_frag);
if (frag!=null) {
Log.i(this.getClass().getSimpleName(),"Tengo dos fragmentos");
mDualFragments=true;
}
如果我处于纵向模式,它将返回null。如果我更改为横向(在emulator中Ctrl+11),frag有一个值,布局被正确渲染,但是如果我再次更改为纵向,它应该有一个空值,但返回一些值,应用程序崩溃
两个方向的布局都不同
我想我误解了碎片的生命周期。有什么想法吗?我找到了解决方案……至少有一个对我有效 一旦我在布局(横向)中加载了一个片段,尽管我改变了方向(只有一个片段的布局),findFragmentById总是返回true,尽管我再次更改为纵向。如果我也检查isInLayout,它会正常工作 在以下网址找到:
我也有同样的问题。您仍然需要检查null,但还要使用方法isInLayout()进行检查,例如:
if (null == getSupportFragmentManager().findFragmentById(R.id.fragment_example) || !getSupportFragmentManager().findFragmentById(R.id.fragment_example).isInLayout()) {
// Fragment has not been created or it is not visible
}