android - 使用 fragment 返回堆栈处理 ActionBar 标题?

标签 android android-fragments android-actionbar actionbarsherlock

我有一个 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/

相关文章:

android - 在 Android 项目中包含外部库

php - 从 Android 到 MySQL Blob 的图像

android - getFragmentById 返回 null

android - 在 ActionBar 上显示进度微调器(刷新)?

Android ActionBarSherlock 重复菜单按钮

android - 如何在触摸微调器时隐藏虚拟键盘

android - Dart/Flutter 如何编译到 Android 上?

java - 将 ArrayList 从 Activity 发送到 Fragment?

android - 在 MapFragment 和 ListFragment 之间切换

java - 无法解析方法 getSupportActionBar().setDisplayHomeAsUpEnabled(true);