Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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 嵌套片段-句柄旋转更改_Android_Rotation_Nested_Fragment_Orientation - Fatal编程技术网

Android 嵌套片段-句柄旋转更改

Android 嵌套片段-句柄旋转更改,android,rotation,nested,fragment,orientation,Android,Rotation,Nested,Fragment,Orientation,我有碎片A,碎片A里面有碎片B。 我正在尝试在屏幕旋转后恢复FragmentB实例。 下面是片段A的onCreate方法: private FragmentB fragmentB; ... @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getChildFragmentManager().executePendingTransact

我有碎片A,碎片A里面有碎片B。 我正在尝试在屏幕旋转后恢复FragmentB实例。 下面是片段A的onCreate方法:

private FragmentB fragmentB;

...

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getChildFragmentManager().executePendingTransactions();

    fragmentB = (FragmentB)
                getChildFragmentManager().findFragmentByTag(FragmentB.class.getSimpleName());

    if (fragmentB == null) {
        fragmentB = new FragmentB();

        getChildFragmentManager().beginTransaction()
                .add(R.id.paneLeft, fragmentB, FragmentB.class.getSimpleName())
                .commit();
    }
}
问题是,findFragmentByTag总是返回null,我在屏幕上创建了两个FragmentB(一个在另一个之上)


问题出在哪里?

尝试使用以下方法:

getChildFragmentManager().beginTransaction().replace(R.id.paneLeft, fragmentB, FragmentB.class.getSimpleName());

将getChildFragmentManager()更改为getFragmentManager()后,它似乎工作正常,但我不知道为什么。
这是安卓系统的bug吗?

它可以工作,但不能解决问题。我想知道findFragmentByTag为什么不起作用。您在哪里重写onCreate()方法?我在FragmentA中重写onCreate(),在方向更改后,Android call onDestroy()方法用于“活动”,您必须将对象保存在onSaveInstanceSave()中。请参阅。您还可以处理在清单(())中声明的配置更改本身。有关替换片段,请参见