嗨,即时通过片段概念实现Android应用程序。我正在使用Sherlock动作栏库。我有一个mainActivity和5个片段,当活动加载时,如果没有保存会话,它会加载第一个片段(主片段)。
我在每个片段中使用这段代码我需要启用setDisplayAsHome:
getSherlockActivity().getSupportActionBar().setDisplayHomeAsUpEnabled(true);
这是在MainFragment:
getSherlockActivity().getSupportActionBar().setDisplayHomeAsUpEnabled(false);
如果我没有主片段,我将直接在MainActivity上使用第一段代码,但这意味着即使mainFragment也会显示一个后退按钮,这就是问题所在。
那么我怎么能只在我的主片段中禁用setDisplayHomeAsUpEnabled(true)(并且只在它上面设置false不工作,它保持为假,我必须在其他片段中添加true)?
答案 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.
没有多大帮助,但仍会节省一些努力。 :)