Android片段-如何更改不同片段上的ActionBar?

Android片段-如何更改不同片段上的ActionBar?,android,android-fragments,Android,Android Fragments,我的应用程序中有一个3页的片段,但我需要每个片段都有一个不同的ActionBar。对于一个片段,我在OnCreateView方法中设置了当前代码,该方法将EditText添加到操作栏: //mainActivityContext is the context for the Main Activity (This is a fragment file) ActionBar actionBar = mainActivityContext.getActionBar(); //

我的应用程序中有一个3页的片段,但我需要每个片段都有一个不同的ActionBar。对于一个片段,我在
OnCreateView
方法中设置了当前代码,该方法将
EditText
添加到操作栏:

    //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
在所有ActionBar菜单中都保持持久性。我只想要一个。我什么都试过了,
menu.clear()
设置选项菜单(true)
充气机。充气(R.menu.different\u文件,菜单),但没有任何效果


有任何帮助吗?

由于操作由活动的选项菜单填充,因此您可以使用
活动#invalidateOptions菜单()
。这将转储当前菜单,并再次调用活动的
onCreateOptions菜单/onPrepareOptions菜单
方法来重建它


如果您使用操作栏选项卡来更改片段配置,那么有一种更好的方法。让每个片段管理菜单中自己的部分。这些片段应该调用SetHasOptions菜单(true)。添加或删除具有选项菜单项的片段时,系统将自动使选项菜单无效,并调用每个片段的onCreateOptions菜单/onPrepareOptions菜单方法以及活动的方法。这样,每个片段都可以管理自己的项目,您无需担心手动执行菜单切换。

有一种很好的方法可以解决这种情况:

在每个片段的
onActivityCreated()
方法调用
sethaspoptions菜单上(true)

现在,您可以在每个片段中覆盖
onCreateOptions菜单()
onoptionItemSelected()

并且不要忘记调用
getActivity().SupportInvalidateOptions菜单()片段的内部
onResume()


我认为通过谷歌将非常有用。

你可以尝试保留相同的编辑文本,但保留不同的字符串。可能的重复可以通过片段实现相同的效果。我已经尝试过了,但是所有的ActionBar项目(也有按钮)都消失了,但是EditText仍然存在。我是否应该尝试使用完全不同的代码来添加EditText?我在应用程序中进行了尝试。这对我很管用。但是我使用tabhost。他需要用这个检查片段。我使用的片段没有标签,在这里找到:当我使用这个时,动作栏上的所有按钮都被清除了,但编辑文本没有?创建EditText的代码是否有问题?可能是因为它是在操作栏无效后创建的。EditText是从一个单独的片段创建的,该片段尚未调用onCreateView?
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    setHasOptionsMenu(true);
}