2

我创建了以下项目,因此您可以查看我的确切代码以及发生了什么: https ://github.com/CorradoDev/TabsTest/commit/8f054dab2371b791c4061ceb511413f720f65d67

基本上我想要做的是隐藏某些页面的标签并在其他页面中显示它们。

下面是我用来显示 onresume 中的选项卡的代码

       if(getActivity().getActionBar().getNavigationMode()==ActionBar.NAVIGATION_MODE_STANDARD){
        getActivity().getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    }

然后隐藏我在简历上执行以下操作的选项卡:

 getActivity().getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);

当我在第一个片段上时(backstack 中没有任何内容)。我可以显示和隐藏第二个标签。它有时会在更改选项卡时出错。

当我在后台堆栈的第二个片段上时,我隐藏了第三个片段。我看到第二个和第三个片段都调用了 onrefresh 但第三个片段没有显示。

我对正在发生的事情以及为什么这并不容易感到困惑。

下面是我通常得到的错误 03-27 15:26:31.029: E/AndroidRuntime(5505): java.lang.IllegalStateException: Fragment already added: Fragment3{41f2e390 #2 id=0x1020002 fragment3}

4

2 回答 2

1

我仍然想知道为什么上述方法不起作用。但我的解决方法是使用片段而不是选项卡创建另一个活动。这似乎运作良好。但是如果他们不打算让您更改标签并且每个片段没有标签,我很感兴趣。

于 2013-03-28T21:12:04.640 回答
0

我有类似的情况 - 只是我使用NAVIGATION_MODE_LIST而不是标签。当我从另一个片段调用片段时遇到类似的问题,例如单击列表项打开项目详细信息。

现在我从主要活动中调用所有片段,这允许我控制操作栏的设置。每当导航列表消失时,我只在调用NAVIGATION_MODE_STANDARD片段时调用NAVIGATION_MODE_LIST其他片段。

于 2014-08-01T15:54:44.247 回答