Android 重新创建活动时,菜单为空

Android 重新创建活动时,菜单为空,android,android-actionbar,Android,Android Actionbar,我已在基本活动中扩展了操作栏菜单,并修改了基本活动中的操作栏项。但当我改变方向时,菜单总是空的,这就是为什么它不更新我的操作栏项目。为什么它是空的? 这是我的代码: @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.base, menu); mMenu = menu; return true; }

我已在基本活动中扩展了操作栏菜单,并修改了基本活动中的操作栏项。但当我改变方向时,菜单总是空的,这就是为什么它不更新我的操作栏项目。为什么它是空的? 这是我的代码:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.base, menu);
        mMenu = menu;
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        // switch (item.getItemId()) {

        if (item.getItemId() == R.id.action_refresh) {
            refreshNewsData();
            return true;
        }
        if (item.getItemId() == R.id.action_share) {
            sharenewsData();

            return true;
        }
        if (item.getItemId() == R.id.action_favorite) {
            addFavorites();
            return true;
        }

        return super.onOptionsItemSelected(item);

    }
我已经在基本活动中编写了这段代码。 受保护的无效显示图标(int id){


我正在使用这些方法更新操作栏菜单项

您无法直接更新操作栏菜单项。每当您要更新菜单项时,请调用
InvalidateOptions菜单()
这将重新绘制操作栏菜单,并调用
OnPrepareOptions菜单()
。您必须注意要在
onPrepareOptions菜单()中显示/隐藏的菜单项

我应该在哪里调用InvalidateOptions功能表?它是在创建baseActivity时在里面还是在创建MainActivity时在里面?我不能写那些方法showIcons&HideIcons吗?我想,你在所有的活动中扩展了你的基本活动吗?那么,在这种情况下,扩展基本活动的所有活动中都会发生变化。如果你只是在一个特定活动中更改之前,请仅在该活动中添加隐藏/显示方法。您可以使用隐藏和显示方法,但请确保从OnPrepareOptions菜单()调用它们意味着我应该在onPrepareoption菜单中写入这些方法?但是如何在此方法中调用它们..我在基本活动中写入了这些方法..N我在需要时直接调用它们..如何在onPRepare options菜单中调用它们直接调用?
if (mMenu != null) {

            MenuItem item = mMenu.findItem(id);
            item.setVisible(true);
        }
    }

    protected void hideIcons(int id) {
        if (mMenu != null) {

            MenuItem item = mMenu.findItem(id);
            item.setVisible(false);
        }