【问题标题】:Find Fragment by tag name in Container在 Container 中按标签名称查找 Fragment
【发布时间】:2013-05-30 21:49:23
【问题描述】:

我有一个相对布局,我正在该相对布局中添加片段。 像这样

     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

【问题讨论】:

  • 片段的“名称”是什么意思?
  • 在上面的代码中我添加了搜索字符串,作为片段中的标签。我想找回那个名字。

标签: android fragment


【解决方案1】:

您可以通过标签检索片段

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

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

if (fragment instanceof HomeFragment) {
}

【讨论】:

  • 带小写 'o' :) - “instanceof”
  • +1。但我想知道我们如何在 TabLayout 的嵌套片段中使用它。我知道这是一个愚蠢的问题,但我需要知道。
【解决方案2】:
Fragment fragment = getFragmentManager().findFragmentById(R.id.order_container);
String tag = (String) fragment.getTag();

【讨论】:

    【解决方案3】:

    如果要获取片段的标签,可以使用 getTag() 方法。这可能不是实现您想要做的最好的方式。

    http://developer.android.com/reference/android/app/Fragment.html#getTag()

    如果您有多个片段并且您将更改它们,请考虑使用适配器。

    【讨论】:

    • 如果容器中没有碎片,如何检查该步骤
    • 您可以使用 findFragmentById 来实现这一点,请参阅@JoaoBiriba 的回答,如果没有片段,它将返回 null。
    • 我正在动态添加framgents 我应该给什么ID?
    • 永远是容器的id
    • 如果一个片段已经添加到带有标签“search”的容器中,那么我将第一个片段替换为带有标签“sale”的新片段,添加到容器中的片段的 id 是否相同总是??
    【解决方案4】:

    你想要这个名字??您可以使用 ID 获取片段并执行以下操作:

    fragment.getClass().getName();
    

    这是你想要的吗? 或者你可以使用:

    fragment.getTag();
    

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

    【讨论】:

      【解决方案5】:

      你可以在FragmentManager中使用findFragmentById

      getFragmentManager().findFragmentById(R.id.order_container)
      

      【讨论】:

        【解决方案6】:

        这已经晚了,但我希望这对某人有所帮助。 按标签查找片段我们可以这样做:

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

        【讨论】:

          【解决方案7】:
          getSupportFragmentManager().findFragmentById(R.id.container).getClass().getName();
          

          【讨论】:

          • 尝试在你的回答中提供更多细节
          猜你喜欢
          • 1970-01-01
          • 2011-02-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多