当我的 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/