Android 动作栏中的片段选项卡片段?

Android 动作栏中的片段选项卡片段?,android,android-fragments,android-actionbar,Android,Android Fragments,Android Actionbar,您可以将片段放入操作栏选项卡的片段中吗 我有一个安卓(3.0/Honeycomb)应用程序,它有一个带有3个选项卡的操作栏。选项卡添加到我的活动的onCreate()方法中,选项卡片段使用TabListener添加/删除。该代码与上的示例几乎相同 TabListener如下所示: public class SwapOutTabListener implements ActionBar.TabListener { public SwapOutTabListener(Fragment fra

您可以将片段放入操作栏选项卡的片段中吗

我有一个安卓(3.0/Honeycomb)应用程序,它有一个带有3个选项卡的操作栏。选项卡添加到我的活动的onCreate()方法中,选项卡片段使用TabListener添加/删除。该代码与上的示例几乎相同

TabListener如下所示:

public class SwapOutTabListener implements ActionBar.TabListener {
    public SwapOutTabListener(Fragment fragment) {
        _fragment = fragment;
    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        ft.add(R.id.fragment_container, _fragment, null);
    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        ft.remove(_fragment);
    }

    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
        // do nothing
    }

    private Fragment _fragment;
}
<LinearLayout>
    <fragment
        android:name="...Fragment_1"
        android:id="@+id/frag1"
    />
    <fragment
        android:name="...Fragment_2"
        android:id="@+id/frag2"
    />
</LinearLayout>
我的两个选项卡是简单的片段,它们只包含一个文本视图,有点像这样(为了清晰起见,大多数属性都被删除):


当tab片段被移除时,我是否有责任移除这些嵌入片段?如果是这样的话,我到底什么时候这样做?

否,片段当前不在层次结构中。我考虑过这样做,但在这一点上,it的所有用例都是由极端过度使用片段驱动的,其中每个单独的UI元素都作为片段实现。这不是它们的用途,它们旨在封装应用程序的主要顶级部分。如果你有一个层次结构的东西,那就是你的布局和视图的用途。

ahhh。实现的感觉。我发现了这个——“注意:当一个布局包含一个片段时,你不能将该布局膨胀成一个片段。嵌套片段只有在动态添加到片段时才受支持。”


您是否可以发布执行制表符切换的TablListener代码?还有重复的
android:id=“@+id/frag2”
行是故意的还是仅仅是发布在这里的问题中的转录错误?@adamp,是的,重复的id是转录错误。。。我编辑了这个问题来纠正这一点。我还把我的Tab听器代码添加到这个问题中。这里是一个用例来考虑。以谷歌I/O 2012应用程序为例,将其安装在10英寸平板电脑上。转到会话视图。顶部有“Sessions”和“Sandbox”作为选项卡,但我不认为您可以在这里使用PageViewer,因为您已经有了片段。我认为最好使用PageViewer,并且仍然允许为您当前所在的选项卡使用片段。
<LinearLayout>
    <fragment
        android:name="...Fragment_1"
        android:id="@+id/frag1"
    />
    <fragment
        android:name="...Fragment_2"
        android:id="@+id/frag2"
    />
</LinearLayout>
Binary XML file line #7: Duplicate id 0x7f05000a, tag null, or parent id 0x7f050009 with another fragment for ...Fragment_1