【问题标题】:Dynamic display using Fragments and FragmentTabHost?使用 Fragments 和 FragmentTabHost 动态显示?
【发布时间】:2013-10-21 08:40:53
【问题描述】:

我正在开发一个包含三个选项卡的应用程序,每个选项卡都有一个与之关联的片段。在某些情况下,我必须在第二个父选项卡中显示子选项卡。但是,如果该条件不成立,则不应加载子选项卡,而父选项卡应加载我在子选项卡中使用的片段之一。例如,我有三个片段 FragmentA、FragmentB 和 FragmentC。现在,如果条件为真,那么我将显示选项卡并使用 Fragment 选项卡主机在 FragmentA 中加载 FragmentB 和 FragmentC。但是条件是假的,我想在 FragmentA 中显示 FragmentB。

我尝试使用Fragment.replace(),但失败了。

【问题讨论】:

  • 您好,我使用了这种方法,但它对我不起作用:Fragment newFragment = new SecondFragment(); FragmentTransaction 事务 = getFragmentManager().beginTransaction(); transaction.replace(R.id.header, newFragment); transaction.addToBackStack(null); // 将 FirstFragment 广告到回栈 transaction.commit();

标签: android tabs android-fragments


【解决方案1】:

我认为这不是一个全新的问题。 你可以在这里找到答案: Separate Back Stack for each tab in Android using Fragments

问候 弗朗切斯科。

【讨论】:

  • 嗨 Francesco,我可以创建嵌套布局。那是父选项卡下的子选项卡。但我面临的问题是我不需要子选项卡,而不是子选项卡,我只想为父选项卡加载一个片段。 for ex if(loadchildtabs){ //加载子标签的代码在这里} else{ //加载片段的代码在这里} 但在我的情况下,父标签包含一个片段,我必须用另一个片段替换父标签片段。
  • 如果您想让我看到您的代码,我可以尝试重现该问题。
【解决方案2】:

按照我的意图,您应该覆盖片段 A 的 onHiddenchange() 并在此处检查条件。

【讨论】:

    【解决方案3】:

    我能够使用通用片段解决问题。在FragmentA 的onCreateView 中,如果条件为真,则使用FragmentTabHost 创建选项卡并将FragmentBFragmentC 添加到选项卡。如果条件为假,则使用

    扩展视图
        View fragmentView = Inflator.Inflate(R.id.fagment_layout, FragmentB); 
        FragmentB fragmentB = new FragmentB();
        FragmentTransaction transaction = getFragmentManager().beginTransaction();
        transaction.replace(fragmentView, fragmentB);
        transaction.commit();
    

    它对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多