2

我无法理解 Android 如何在方向更改时处理片段(尤其是嵌套片段)。

假设我有一个a1加载片段的活动f1f1然后在方法中将片段的多个实例加载f2到自身中oncreateview()

现在我的活动a1在(oncreate())中有这个:

if (savedInstanceState != null)
    return;

确保f1不会加载多个实例。我做同样的事情f1以确保f2不会加载重复的实例。

但是,我的班级稍后f1需要引用这些f2实例。目前我将它们存储在f1对象中的 ArrayList 中,但是在方向更改后,此 ArrayList 为空,我认为这些f2实例无论如何都是不同的对象。

所以我的问题是,如何拥有嵌套片段并在方向改变后保持对它们的引用的最佳方式是什么?

4

1 回答 1

2

您可以使用 FragmentManger 查找对其他片段的引用。

您可以通过执行以下操作来获取对另一个片段的引用:

DetailsFragment details = (DetailsFragment) getFragmentManager().findFragmentById(R.id.details);

或者

DetailsFragment details = (DetailsFragment) getFragmentManager().findFragmentByTag("my tag");

如果您还没有看过它,请查看这篇博文。

在您有同一个片段的多个实例的情况下,您可以在创建片段时设置一个标签,并在查找片段时使用它而不是 id。

于 2012-05-08T19:40:46.330 回答