Android更改每个片段的setNavigationMode会导致应用程序崩溃

时间:2013-03-27 20:18:44

标签: android android-actionbar

我创建了以下项目,因此您可以看到我的确切代码以及发生了什么: 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:已添加片段:Fragment3 {41f2e390#2 id = 0x1020002 fragment3}

2 个答案:

答案 0 :(得分:1)

我仍然想知道为什么以上不起作用。但我的修复是使用片段创建另一个活动而没有标签。这似乎运作良好。但我感兴趣的是,如果他们不打算更改标签,而且每个片段都没有标签。

答案 1 :(得分:0)

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

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