2014-09-22 63 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