在android上使用片段布局时如何正确禁用动作栏setDisplayHomeAsUpEnabled for main fragment?

时间:2014-04-10 15:15:56

标签: android android-fragments

  嗨,即时通过片段概念实现Android应用程序。我正在使用Sherlock动作栏库。我有一个mainActivity和5个片段,当活动加载时,如果没有保存会话,它会加载第一个片段(主片段)。

我在每个片段中使用这段代码我需要启用setDisplayAsHome:

    getSherlockActivity().getSupportActionBar().setDisplayHomeAsUpEnabled(true);

这是在MainFragment:

    getSherlockActivity().getSupportActionBar().setDisplayHomeAsUpEnabled(false);

如果我没有主片段,我将直接在MainActivity上使用第一段代码,但这意味着即使mainFragment也会显示一个后退按钮,这就是问题所在。

那么我怎么能只在我的主片段中禁用setDisplayHomeAsUpEnabled(true)(并且只在它上面设置false不工作,它保持为假,我必须在其他片段中添加true)?

1 个答案:

答案 0 :(得分:3)

ActionBar属于Activity而不是Fragment,所以它只有一个ActionBar会在你的所有片段中显示出来。

因此,如果您将它或其任何组件隐藏在一个片段中,您实际上隐藏了Activity的唯一ActionBar(所有片段的相同Activity),它将保持隐藏直到您再次显示它。这就是假设工作的方式。

对于您的情况,除了MainFragment之外,您必须为片段的其余部分启用它。 (是的,你是对的)

为了方便您自己,您可以在“活动”中创建两个方法来显示和隐藏,例如

public void showHome(){
   getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

public void hideHome(){
   getSupportActionBar().setDisplayHomeAsUpEnabled(false);
}

然后在相应的片段中调用它,

getSherlockActivity().showHome() n viceversa.

没有多大帮助,但仍会节省一些努力。 :)