Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android FindFragmentById未返回null_Android_Fragment - Fatal编程技术网

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
}