首页 > 解决方案 > 开始新活动时不调用 onCreateOptionsMenu()

问题描述

从活动切换到活动(使用startActivity(intent))时,不会调用新活动的onCreateOptionsMenu方法。

以下是调用新活动开始的活动 1 的代码:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_newWorkout:
            Intent intentNewWorkoutScreen = new Intent(this, NewWorkoutActivity.class);
            startActivity(intentNewWorkoutScreen);
            return true;
        case R.id.action_saveWorkout:

            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

在活动 2 中,这里是 onCreateOptionsMenu 方法:

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.action_bar, menu);
    //get a reference to the adding new workout button
    MenuItem newWorkoutItem = menu.findItem(R.id.action_newWorkout);
    //set it to invisible
    newWorkoutItem.setVisible(false);


    return super.onCreateOptionsMenu(menu);
}

以下代码也在活动2的onCreate()中:

toolbar = findViewById(R.id.toolbar);
//set it as the supportActionBar
setSupportActionBar(toolbar);

活动 2 打开并且工具栏可见,但我无法单击任何菜单项,我设置为不可见的项目也实际上不可见。值得注意的是,在活动 2 和 1 的 XML 文件中,我只是用于工具栏布局。活动 1 的onCreateOptionsMenu()代码和onOptionsItemSelected()方法都可以正常工作。

我有什么理由为什么活动 2 的代码不起作用?

标签: javaandroidandroid-actionbartoolbar

解决方案


onCreateOptionsMenu你的 2ndActivity中,
return true;而不是return super.onCreateOptionsMenu(menu).
通过返回true,您说您已经编写了所需的代码来扩展menu. 通过链接到超类onCreateOptionsMenu(),你说让它由你的超类处理Activity


推荐阅读