我无法理解 Android 如何处理方向变化时的 fragment (特别是嵌套 fragment )。
假设我有一个加载 fragment f1
的 Activity a1
。然后,f1
在 oncreateview()
方法中将 fragment f2
的多个实例加载到自身中。
现在我的 Activity a1
在 (oncreate()
) 中包含此内容:
if (savedInstanceState != null)
return;
确保 f1
的多个实例不会被加载。我在 f1
中执行相同的操作,以确保不会加载重复的 f2
实例。
但是,我的类 f1
稍后需要引用 f2
实例。目前,我将它们存储在 f1
对象的 ArrayList 中,但是在方向更改后,此 ArrayList 为空,我认为 f2
实例无论如何都会是不同的对象。
所以我的问题是,嵌套 fragment 并在方向更改后保留对它们的引用的最佳方法是什么?
最佳答案
您可以使用 FragmentManger 查找对其他 fragment 的引用。
您可以通过执行以下操作来获取对另一个 fragment 的引用:
DetailsFragment details = (DetailsFragment) getFragmentManager().findFragmentById(R.id.details);
或
DetailsFragment details = (DetailsFragment) getFragmentManager().findFragmentByTag("my tag");
如果您还没有看过,请看一下 this博客文章。
如果您有同一 fragment 的多个实例,您可以在创建 fragment 时设置一个标签,并在查找 fragment 时使用它而不是 id。
关于android - 配置(方向)更改时的嵌套 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10505247/