java - 离开 fragment 后更新 ActionBar 标题

标签 java android android-actionbar

当我的 MainActivity 启动时,我的 ActionBar 显示应用程序标题。一旦您通过抽屉导航导航到 fragment ,标题就会更改以匹配 fragment ...但是,一旦您使用后退按钮导航回来,标题将保持不变,并且仍然具有 fragment 的标题。我希望将其改回应用程序标题。

我尝试在 MainActivity.java 中使用 onResume() 方法,但一旦留下 fragment ,该方法似乎就不会被调用。

@Override
    public void onResume() {
        super.onResume();
        // Set title
        getActionBar().setTitle("FuelR");
        invalidateOptionsMenu();
    }

有谁知道将标题改回 app_name 的最佳方法是什么?

谢谢

最佳答案

事实上,销毁 Activity 中的 Fragment 并不意味着 Activity 会调用 onResume,首先您必须注意到 Fragment 存在于 Activity 生命上下文中,并且 Fragment 不会改变其生命周期,只是其中的一部分,您可以做的是在 fragment 中获取对 Activity 的引用并将标题设置回之前的状态,如下所示:

//In Fragment
@Override
public void onDestroyView() {
    super.onDestroyView();
    ((Cast If Necessary)getActivity()).getActionBar().setTitle("Previous Title");
}

或者更面向对象的方法是,创建一个声明方法 setTitlePreviousText 的接口(interface),您在 Activity 类中实现该接口(interface),并从 fragment 中执行此操作:

    //In Fragment
    @Override
    public void onDestroyView() {
        super.onDestroyView();
            Activity act = getActivity()
            if(act instanceof SetPreviousTextInterface){
                //setTitlePreviousText will be called giving you the chance to just change it back...
            ((SetPreviousTextInterface)act).setTitlePreviousText();
            }
    }

这将是接口(interface)文件:

public interface SetPreviousTextInterface{
    public void setTitlePreviousText();
}

问候!

关于java - 离开 fragment 后更新 ActionBar 标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22178322/

相关文章:

android - 有没有办法在android中使用mysql转储文件作为数据库源

android - 无法使用 Theme.AppCompat 设置十六进制颜色和查看操作栏上的图标

Android 如何在没有 ActionBar 的情况下隐藏状态栏

java - Travis checkstyle 警告

java - 在 Spring 5.1.0 中加载和切换属性源的最优雅的方式是什么?

java - 非静态方法问题

java - 节省空间的长表示

javascript - 如何用钛创建文件?

android - EditText 填充不起作用

android - 在 Android 2 中隐藏状态栏,但在 Android 3/4 中保留操作栏