我有一个无头片段来在配置更改期间保留我的数据。
rFrag = new RetainedFragment();
getSupportFragmentManager()
.beginTransaction()
.add(rFrag, MODEL)
.commit();
除了无头片段附加到的原始活动之外,在另一个活动或片段内部访问此片段的最佳方法是什么?
使用它不起作用:
RetainedFragment rFrag = (RetainedFragment)getSupportFragmentManager
.findFragmentByTag(model);
我进行了搜索,我相信这是因为我没有将保留的片段添加到backstack上,但在backstack上添加一个无头片段并不是我想做的。
现在我只是将保留的片段设置为公共和静态,如下所示:
public static RetainedFragment rFrag;
但我觉得使用这样的静态变量并不是一个好习惯。
答案 0 :(得分:2)
首先,我不知道“无头碎片”是什么意思。
其次,我不知道RetainedFragment()类是什么,但我会假设它只是你创建的一个扩展Fragment的类。
第三,您无法通过其他活动访问片段。每个片段都附加到一个Activity上,当该Activity不可见时,其片段不可访问。
最后,即使您强制使用静态方法和字段等进行访问,您也是对的,这不是一个好习惯。您可以而且应该使用Intent extras和Fragment参数将数据从一个传递到另一个。你提到你需要保留一些数据,所以你实际上并不需要整个片段,对吧?您可以只保存,加载和传递所需的数据。