2016-08-23 51 views
2

我想在每個FragmentActionBar的標題將被改編。例如,如果我選擇「列表」選項(即Fragment),則ActionBar的標題必須是「列表」。如何更改片段的標題而不更改MainActivity的標題?

我可以使用下面的代碼做到這一點:

getActivity().setTitle("Lists"); 

,但是當我回到MainActivity(使用菜單選項或手機上的後退按鈕),它保持了標題爲「列表」,而不是「我的應用程序」即默認標題。

如果我嘗試設置標題上MainActivity

setTitle("My application"); 

它不會改變。

如何維護MainActivity的標題並修改每個Fragments的標題?

提前致謝!

回答

1

最後我能夠改變的標題你輸入Fragment後輸入MainActivity並修改其中的ActionBar的標題。我需要用兩個不同的事件來改變它:當我點擊應用程序的菜單並且當我按下移動電話的按鈕時。我將我的答案分開兩個部分,每個事件一:

- 要當你按返回鍵在手機上更改MainActivity標題

您需要使用您MainActivity.classonBackPressed()法檢測該事件,然後使用setTitle方法更改您的ActionBar的標題。

@Override 
public void onBackPressed() { 
    setTitle("Lists"); 
} 

- 要更改標題上MainActivity當你在你的菜單選項,按「家」。

在您onNavigationItemSelected方法,當你按下選項「家」可以檢測,然後開始新的Fragment(我們稱之爲MainFragment),所以如果你是在另一個Fragment它返回一個空的佈局,例如AnotherFragment(帶另一個ActionBar冠軍),你按你的「主頁」選項,在你的菜單中,您可以重新設置您的MainActivity的標題爲默認一個在MainFragment用下面的代碼:

getActivity().setTitle("Lists"); 

這樣,你就可以更改您的的標題維持其佈局。

0

嘗試使用getSupportActionBar()。setTitle(「title」);

這就是我使用的,它似乎運作良好。以下是使用我的代碼將片段添加到viewpager的示例。

private void addPages(ViewPager pager) { 
    MyFragPagerAdapter adapter = new MyFragPagerAdapter(getSupportFragmentManager()); 
    Intent intent = getIntent(); 
    String workout = intent.getStringExtra("work"); 
    Bundle args = new Bundle(); 
    args.putString("work", work); 
    String title = args.getString("work"); 
    switch(title) { 
     case "w29w1" : { 
      getSupportActionBar().setTitle("Work 29 Week 1"); 
      break; 
     } 
     case "w29w2" : { 
      getSupportActionBar().setTitle("Work 29 Week 2"); 
      break; 
     } 
MondayFragment mondayFragment = new MondayFragment(); 
    mondayFragment.setArguments(args); 

在這個例子中,我只是在工具欄的標題設置的東西,這取決於它從以前的類得到的意圖,該片段用於多組數據。

0

將這個代碼在兩個活動的onResume()和片段

片段:

@Override 
    public void onResume() { 
     super.onResume(); 
     if(getActivity().getSupportActionBar()!=null) 
      getActivity().getSupportActionBar().setTitle("Lists"); 
    } 

活動:

@Override 
    protected void onResume() { 
     super.onResume(); 
     if(getSupportActionBar()!=null) 
      getSupportActionBar().setTitle("Title"); 
    } 
+0

它給了我同樣的效果。它改變了'Fragment'標題,但它在MainActivity視圖中保留了'Fragment'的標題。 –

+0

重寫'onBackPressed()'的活動和'setTitle'他們爲你活動 –

+0

我也嘗試過'onBackPressed()',但它仍然不會再改變MainActivity標題。 –