使用片段后台堆栈处理ActionBar标题?

我有一个活动,我在其中加载一个列表片段,单击后,它会向下钻取一个级别,并显示一个新类型的列表片段,替换原来的类型(使用下面的showFragment方法)。这是放在后堆栈上的

开始时,活动在操作栏中显示默认标题(即,它是根据应用程序的android:label自动设置的)

显示层次结构中下一级别的列表时,单击的项目名称应成为操作栏的标题

但是,当按返回时,我希望恢复原始的默认标题。这不是FragmentTransaction所知道的,因此不会还原标题

我隐约读到了碎片面包屑,但这似乎需要使用自定义视图。我使用的是ActionBarSherlock,希望没有自己的自定义标题视图

这样做的最佳方式是什么?如果没有大量的样板代码,并且必须跟踪沿途显示的标题,这是可能的吗


受保护的void showFragment(片段f){
FragmentTransaction ft=getSupportFragmentManager().beginTransaction();
ft.更换(R.id.碎片容器,f);
ft.addToBackStack(空);
ft.commit();
}

在每一个片段和每一个活动中,我都会这样更改标题。这样,活动标题将始终正确:

@覆盖
恢复时公开作废(){
super.onResume();
//定名
getActivity().getActionBar()
.setTitle(R.string.thetitle);
}

在某些情况下,onResume不在片段内调用。在某些情况下,我们可以使用:

public void setUserVisibleHint(布尔值isVisibleToUser){
super.setUserVisibleHint(isVisibleToUser);
如果(isVisibleToUser){
//定名
getActivity().getActionBar()
.setTitle(R.string.thetitle);
}
}

发表评论