在容器中按标签名称查找片段

16

我有一个相对布局,并且在该相对布局中添加了片段。就像这样:

     HomeFragment mHomeFragment = new HomeFragment();
    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction =fragmentManager.beginTransaction();

    if(mHomeFragment!=null&& mHomeFragment.isAdded()){

        fragmentTransaction.show(mHomeFragment);

    }else {

        fragmentTransaction.add(R.id.order_container,mHomeFragment,"Search");


    }
    fragmentTransaction.commit();

我还有一个文本视图,需要展示我在相对布局中添加的片段的名称。 就像搜索一样。 如何获取添加到我的相对布局中、ID为R.id.order_container的片段名称?


"片段的“名称”是什么意思?" - Ken Wolf
在上面的代码中,我已经将搜索字符串作为片段标签添加了进去。我想要检索那个名称。 - Bora
7个回答

46

您可以通过标签检索 Fragment

Fragment fragment = getFragmentManager().findFragmentByTag("yourstringtag");

然后你可以检查你的片段是否是 HomeFragment 的实例

if (fragment instanceof HomeFragment) {
}

1
instanceof - keybee
+1。但我想知道如何在带有TabLayout的嵌套片段中使用它。我知道这是一个愚蠢的问题,但我需要知道。 - Anshul Tyagi

4
Fragment fragment = getFragmentManager().findFragmentById(R.id.order_container);
String tag = (String) fragment.getTag();

3
你想要名称吗?你可以通过使用ID获取你的片段并执行以下操作来获得它:
fragment.getClass().getName();

您需要的是这个吗?

或者您可以使用:

fragment.getTag();

如果指定了片段,它将返回该片段的标签名称。


3

如果容器中没有片段,如何检查该步骤? - Bora
你可以使用findFragmentById来实现这个功能,参见@JoaoBiriba的答案。如果没有fragment,则它将返回null。 - Philio
我正在动态添加片段,我应该给它什么ID? - Bora
它将始终是容器的ID。 - Philio
如果一个带有“搜索”标签的容器中已经添加了一个片段,那么我用一个带有“销售”标签的新片段替换第一个片段,容器中添加的片段ID是否始终相同? - Bora

2
您可以在FragmentManager中使用findFragmentById方法。
getFragmentManager().findFragmentById(R.id.order_container)

0

这篇文章晚发了,但我希望能对某些人有所帮助。 通过标签查找片段我们可以这样做:

String tag=getSupportFragmentManager().getFragments().get(index).getTag();
SecondFragment f = (SecondFragment) getSupportFragmentManager().findFragmentByTag(tag);

-1
getSupportFragmentManager().findFragmentById(R.id.container).getClass().getName();

2
请在您的回答中提供更多细节。 - Pankaj Pareek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接