Android 嵌套片段-句柄旋转更改
我有碎片A,碎片A里面有碎片B。 我正在尝试在屏幕旋转后恢复FragmentB实例。 下面是片段A的onCreate方法: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
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()中。请参阅。您还可以处理在清单(())中声明的配置更改本身。有关替换片段,请参见