2017-04-06 50 views
1

我有一個Android應用程序,它由幾個片段組成。 每次顯示片段時,我都將ActionBar標題設置爲該片段。Android actionBar.setTitle使getActivity.setTitle()不工作

我這樣做是與

getActivity().setTitle("abc"); 

在App後來我需要工作更多一些片段的動作條。所以我不得不改變這樣的標題:

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

這工作得很好,並改變標題爲「xyz」。 仍然在更改爲另一個使用活動本身的setTitle(「abc」)的Fragment時,標題仍然保留在「xyz」處。第一次完成此操作後,我只能使用getSupportActionBar()對象更改標題。

我的問題是:這是正常的嗎?這個調用是否會以某種方式改變/無效正常的活動標題?

回答

0

如果您檢查活動源代碼,setTitle()方法將文本設置爲actionBar本身。

考慮有兩個片段,A和B

片段A將默認在活動顯示。

因此,稍後當您從片段B更新標題時,可以使用getSupportActionBar()或getActionBar()方法並更新標題。

因爲這是發生,即使你回到以前的片段最近的變化,即片段A,如果你想的標題是一樣的,在片段B.

設置再次更改標題,在片段A的onResume()方法中執行。

+0

我實際上是在onResume()上做的,正如我所說的,使用getSupportActionBar()可以正常工作 - 即使稍後調用也是如此。它只是「打破」活動的setTitle()。 –