我无法理解Android如何处理片段(特别是嵌套片段)的方向更改。
假设我有一个加载片段a1
的活动f1
。 f1
然后在f2
方法中将多个片段oncreateview()
的实例加载到自身中。
现在,我的活动a1
在(oncreate()
)中有此内容:
if (savedInstanceState != null)
return;
确保不会加载f1
的多个实例。我在f1
中执行相同的操作以确保不会加载重复的f2
实例。
但是,我的班级f1
稍后需要引用f2
个实例。目前我将它们存储在f1
对象的ArrayList中,但是在方向更改后,此ArrayList为空,我认为f2
实例将是任何方式的不同对象。
所以我的问题是,在方向更改后如何获得嵌套片段以及保留对它们的引用的最佳方法是什么?
答案 0 :(得分:2)
您可以使用FragmentManger查找对其他片段的引用。
您可以通过执行以下操作来获取对其他片段的引用:
DetailsFragment details = (DetailsFragment) getFragmentManager().findFragmentById(R.id.details);
或
DetailsFragment details = (DetailsFragment) getFragmentManager().findFragmentByTag("my tag");
如果您还没有看过,请查看this博文。
如果您有多个相同片段的实例,则可以在创建片段时设置标记,并在查找片段时使用该标记而不是id。