如何获得无头片段的引用?

时间:2015-09-15 01:25:16

标签: android android-fragments

我有一个无头片段来在配置更改期间保留我的数据。

rFrag = new RetainedFragment();
            getSupportFragmentManager()
                    .beginTransaction()
                    .add(rFrag, MODEL)
                    .commit();

除了无头片段附加到的原始活动之外,在另一个活动或片段内部访问此片段的最佳方法是什么?

使用它不起作用:

RetainedFragment rFrag = (RetainedFragment)getSupportFragmentManager
                            .findFragmentByTag(model);

我进行了搜索,我相信这是因为我没有将保留的片段添加到backstack上,但在backstack上添加一个无头片段并不是我想做的。

现在我只是将保留的片段设置为公共和静态,如下所示:

public static RetainedFragment rFrag;

但我觉得使用这样的静态变量并不是一个好习惯。

1 个答案:

答案 0 :(得分:2)

首先,我不知道“无头碎片”是什么意思。

其次,我不知道RetainedFragment()类是什么,但我会假设它只是你创建的一个扩展Fragment的类。

第三,您无法通过其他活动访问片段。每个片段都附加到一个Activity上,当该Activity不可见时,其片段不可访问。

最后,即使您强制使用静态方法和字段等进行访问,您也是对的,这不是一个好习惯。您可以而且应该使用Intent extras和Fragment参数将数据从一个传递到另一个。你提到你需要保留一些数据,所以你实际上并不需要整个片段,对吧?您可以只保存,加载和传递所需的数据。