Android actionBar.setTitle使getActivity.setTitle()不起作用

时间:2017-04-06 14:07:47

标签: android android-actionbar android-support-library

我有一个包含多个片段的Android应用程序。 每次显示片段时,我都会将ActionBar标题设置为此片段。

我用

做了这个
getActivity().setTitle("abc");

稍后在App中,我需要使用Fragment的ActionBar进行更多工作。所以我不得不改变这样的标题:

ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
if (actionBar != null)
   actionBar.setTitle("xyz");

这完全正常,并将标题更改为“xyz”。 仍然在更改为另一个使用来自Activity本身的setTitle(“abc”)的片段时,标题仍然保持在“xyz”。在我第一次完成此操作后,我只能使用getSupportActionBar()对象更改标题。

我的问题是:这是正常的吗?这个调用是否以某种方式转换/使正常的Activity-Title无效?

1 个答案:

答案 0 :(得分:0)

如果检查活动源代码,setTitle()方法将文本设置为actionBar本身。

考虑有两个片段,A和B.

片段A默认显示在活动中。

所以稍后当你从片段B更新标题时,你使用getSupportActionBar()或getActionBar()方法并更新标题。

由于这是最近发生的变化,即使你回到前面的片段,即片段A,标题也会相同,就像片段B中设置的那样。

如果要再次更改标题,请在片段A的onResume()方法中执行此操作。