我有一个 Activity
,我在其中加载 ListFragment
,点击后,它会向下钻取一个级别和一种新类型的 ListFragment
显示,替换原来的(使用下面的 showFragment
方法)。这被放置在后栈中。
一开始,Activity 在操作栏中显示默认标题(即它是根据应用程序的 android:label
自动设置的)。
在显示层次结构中下一级的列表时,单击的项目名称应成为操作栏的标题。
但是,当按下 Back 时,我希望恢复原来的默认标题。这不是 FragmentTransaction
知道的东西,因此不会恢复标题。
我模糊地阅读了有关 FragmentBreadCrumbs
的信息,但这似乎需要使用自定义 View 。我正在使用 ActionBarSherlock,并且不希望有自己的自定义标题 View 。
这样做的最佳方法是什么?是否有可能无需加载样板代码并且必须跟踪沿途显示的标题?
protected void showFragment(Fragment f) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, f);
ft.addToBackStack(null);
ft.commit();
}
最佳答案
在每个 fragment 和每个 Activity 中,我都会像这样更改标题。这样, Activity 标题将始终正确:
@Override
public void onResume() {
super.onResume();
// Set title
getActivity().getActionBar()
.setTitle(R.string.thetitle);
}
在某些情况下,onResume 不会在 fragment 内部调用。在某些情况下,我们可以使用:
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser) {
// Set title
getActivity().getActionBar()
.setTitle(R.string.thetitle);
}
}
关于android - 使用 fragment 返回堆栈处理 ActionBar 标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13472258/