我有一个包含多个片段的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无效?
答案 0 :(得分:0)
如果检查活动源代码,setTitle()方法将文本设置为actionBar本身。
考虑有两个片段,A和B.
片段A默认显示在活动中。
所以稍后当你从片段B更新标题时,你使用getSupportActionBar()或getActionBar()方法并更新标题。
由于这是最近发生的变化,即使你回到前面的片段,即片段A,标题也会相同,就像片段B中设置的那样。
如果要再次更改标题,请在片段A的onResume()方法中执行此操作。