2014-09-22 51 views
0

我在我的應用程序中有一個3頁的片段,但我需要每個片段有不同的ActionBar。對於一個片段我已在OnCreateView方法,在一個EditText的動作條將當前代碼:Android碎片 - 如何更改不同片段上的ActionBar?

//mainActivityContext is the context for the Main Activity (This is a fragment file) 
    ActionBar actionBar = mainActivityContext.getActionBar(); 
    // add the custom view to the action bar 
    actionBar.setCustomView(R.layout.actionbar_view); 
    search = (EditText) actionBar.getCustomView().findViewById(R.id.searchfield); 
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM 
      | ActionBar.DISPLAY_SHOW_HOME); 

然而,這EditText停留在所有的動作條菜單的持續性。我只想要一個。我已經嘗試了一切,menu.clear();,setHasOptionsMenu(true);,inflater.inflate(R.menu.different_file, menu);,但沒有任何工作。

任何幫助?

+0

你可以嘗試保持相同的EditText但不同的字符串。 – 2014-09-22 09:22:49

+0

[片段中的Android選項菜單]的可能重複(http://stackoverflow.com/questions/8308695/android-options-menu-in-fragment) – SMR 2014-09-22 09:49:35

回答

0

由於操作由活動的選項菜單填充,因此您可以使用Activity#invalidateOptionsMenu()。這將轉儲當前菜單並再次調用您的活動的onCreateOptionsMenu/onPrepareOptionsMenu方法來重建它。

如果您正在使用操作欄選項卡來更改片段配置,則有更好的方法。讓每個片段管理它自己的菜單部分。這些片段應該調用setHasOptionsMenu(true)。當添加或刪除具有選項菜單項的片段時,系統將自動使選項菜單失效,併除了活動之外還調用每個片段的onCreateOptionsMenu/onPrepareOptionsMenu方法。通過這種方式,每個片段都可以管理自己的項目,您無需擔心手動執行菜單切換。

+0

可以實現與片段相同。在項目中增加複雜性的活動中實施此項目。 – SMR 2014-09-22 09:23:32

+0

我試過這個,但所有的ActionBar項目(也有按鈕)都消失了,但EditText仍然存在。我應該嘗試一個完全不同的代碼來添加EditText嗎? – Groot 2014-09-22 09:24:49

+0

我在我的應用程序中嘗試過。它對我來說工作得很好。但我使用tabhost。他需要檢查這個碎片。 – Ajit 2014-09-22 09:25:33

2

有一個很不錯的方法去了解這種情況:

每個片段的onActivityCreated()方法調用setHasOptionsMenu(true);

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    setHasOptionsMenu(true); 
} 

現在您可以覆蓋onCreateOptionsMenu()onOptionsItemSelected()每個片段內。

而且也不要忘記在onResume()的片段內調用getActivity().supportInvalidateOptionsMenu();

我認爲this sample由谷歌將是非常有益的。

+0

當我使用這一切ActionBar上的按鈕清除但不是EditText?創建EditText的代碼有問題嗎? – Groot 2014-09-22 09:36:35

+0

可能是因爲它是在操作欄無效後創建的。 – SMR 2014-09-22 09:39:25

+0

http://stackoverflow.com/questions/8308695/android-options-menu-in-fragment – SMR 2014-09-22 09:50:12