当我的MainActivity启动时,我的ActionBar会显示应用标题。一旦您通过导航抽屉导航到片段,标题就会更改为与片段匹配...但是,一旦您使用后退按钮导航回来,标题就会保持不变,并且仍然具有片段的标题。我希望将其更改回应用程序标题。
我曾尝试在MainActivity.java中使用onResume()方法,但看起来一旦离开片段就不会被调用。
@Override
public void onResume() {
super.onResume();
// Set title
getActionBar().setTitle("FuelR");
invalidateOptionsMenu();
}
有谁知道将标题更改回app_name的最佳方法是什么?
由于
答案 0 :(得分:3)
确实在活动中销毁片段并不意味着活动将调用onResume,首先你必须注意到Fragment存在于Activity生命周期中,而片段不会改变它的生命周期,只是它的一部分,您可以做的是在片段内获取对活动的引用并将标题设置回以前的状态,如下所示:
//In Fragment
@Override
public void onDestroyView() {
super.onDestroyView();
((Cast If Necessary)getActivity()).getActionBar().setTitle("Previous Title");
}
或者更多的OOP方法,创建一个声明方法setTitlePreviousText的接口,在Activity类中实现该接口,并从片段中实现:
//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();
}
}
这将是接口文件:
public interface SetPreviousTextInterface{
public void setTitlePreviousText();
}
问候!