Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未在片段中调用OnPrepareOptions菜单_Java_Android - Fatal编程技术网

Java 未在片段中调用OnPrepareOptions菜单

Java 未在片段中调用OnPrepareOptions菜单,java,android,Java,Android,我试图以片段形式加载菜单,但根本没有调用onPrepareOptionsMenu,我需要在其中隐藏一些菜单项 更新: @Override public void onCreateOptionsMenu(Menu menu,MenuInflater inflater){ Log.d("Does", "get called"); inflater.inflate(R.menu.menuItem, menu); super.onCreat

我试图以片段形式加载菜单,但根本没有调用
onPrepareOptionsMenu
,我需要在其中隐藏一些菜单项

更新:

    @Override
    public void onCreateOptionsMenu(Menu menu,MenuInflater inflater){
        Log.d("Does", "get called");
        inflater.inflate(R.menu.menuItem, menu);
        super.onCreateOptionsMenu(menu,inflater);
    }

    @Override
    public void onPrepareOptionsMenu(Menu menu) {
        super.onPrepareOptionsMenu(menu);
        getActivity().invalidateOptionsMenu();
        MenuItem filter = menu.findItem(R.id.section);

        filter.setVisible(false);

    }

我正在调用我的
onCreate()
方法中的
sethaspoptions菜单(true)

在Android 3.0及更高版本上,当操作栏中显示菜单项时,选项菜单被视为始终打开。当事件发生并且要执行菜单更新时,必须调用InvalidateOptions菜单()以请求系统调用PrepareOptions菜单()


要更改特定项目,请使用:
menu.findItem(R.id.your\u item\u id)
可能太晚了,但我遇到了同样的问题,解决方法非常简单。 只需从片段中调用getActivity().InvalidateOptions菜单()。 这将调用PrepareOptions功能表,您可以在此处控制项目的可见性,如下所示: menu.findItem(R.id.youritem).setVisible(真/假); 希望有帮助

这对我很有用

    @Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setHasOptionsMenu(true);
}
你需要做两件事。 步骤1:在CreateView的片段中添加SetHasOptions菜单(true)


步骤2:需要添加getActivity().InvalidateOptions菜单();在OnViewCreated中的片段中。或者在mainActivity中更改片段。

谢谢,我也遇到了同样的问题,但正如您所说,在片段onCreate中添加对SetHasOptions菜单(true)的调用修复了它。
public class ContentFragment extends android.support.v4.app.Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.content_frame,container,false);
        setHasOptionsMenu(true);
        return v;
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.note_menu,menu);
        super.onCreateOptionsMenu(menu, inflater);
    }
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    setHasOptionsMenu(true);
    return inflater.inflate(R.layout.fragment_user_settings, container, false);
}