为什么在onCreateOptionsMenu之外menuItem为null?

问题描述

我正在尝试访问createOptionsMenu()之外的菜单项,而menuItem在此方法之外返回null。有什么方法可以在android的onPostCreate()中使用menuItem。

在下面的代码中,menuItem“ action”在onCreateOptionsMenu()中不为null,但在onPostCreate()方法中为null。我需要在此处使用它,为什么onCreateOptionsMenu之外的menuItem为null?有没有办法在onCreateOptionsMenu或onPrepareOptionsMenu方法之外使用它?

更新

public class ActionActivity extends xxx {

private MenuItem action;

 @Override
    public boolean onCreateOptionsMenu(final Menu menu) {
        getMenuInflater().inflate(R.menu.menu_preview,menu);
        action = menu.findItem(R.id.action);
        return true;
    }
  
   @Override
    public void onPostCreate(Bundle savedInstanceState) {
            // Code to show the coachmark for the menu item. 
            show();
    }

    public void show() {
         new Handler().post(() -> {
              View anchor = null;
                if (action != null) {
                    anchor = action.getActionView();
                }
                // code to show a coachmark passing the anchor view reference
         });
    }
}

menu_preview.xml:

<item
    android:id="@+id/action_search"
    android:title="@string/search_action"
    app:showAsAction="never"/>

<item
    android:id="@+id/action_share"
    android:title="@string/share_action"
    app:showAsAction="never"/>

<item
    android:id="@+id/action"
    android:title="@string/action"
    android:icon="@drawable/action"
    app:showAsAction="ifRoom"/>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)