如何通过代码设置Fragment标签?

我还没有find像Fragment类中的setTag(String tagName)方法。 设置我find的Fragment标签的唯一方法是做一个FragmentTransaction并传递一个标签名称作为参数。

这是通过代码显式设置Fragment标签的唯一方法吗?

是。 所以唯一的办法是在交易时间,例如使用addreplace或作为布局的一部分。

我通过考察兼容性来源来确定这一点,因为我过去曾经在某个时候简单地寻找类似的东西。

您可以通过以下方式将标记设置为片段:

 Fragment fragmentA = new FragmentA(); getFragmentManager().beginTransaction() .replace(R.id.MainFrameLayout,fragmentA,"YOUR_TARGET_FRAGMENT_TAG") .addToBackStack("YOUR_SOURCE_FRAGMENT_TAG").commit(); 

您可以在活动布局xml文件中提供一个标签。

使用唯一的string提供android:tag属性。“

就像您在布局xml中分配id一样。

  android:tag="unique_tag" 

链接到开发人员指南

你也可以像这样得到所有的片段:

对于v4 fragmets

 List<Fragment> allFragments = getSupportFragmentManager().getFragments(); 

对于app.fragment

 List<Fragment> allFragments = getFragmentManager().getFragments(); 

您可以将标记添加为Fragment参数的属性。 如果片段被破坏,然后由操作系统重新创build,它将自动恢复。

例如 : –

  final Bundle args = new Bundle(); args.putString("TAG", "my tag"); fragment.setArguments(args);