java - 开始新活动时不调用 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 的代码不起作用?
解决方案
在onCreateOptionsMenu
你的 2ndActivity
中,
return true;
而不是return super.onCreateOptionsMenu(menu)
.
通过返回true
,您说您已经编写了所需的代码来扩展menu
. 通过链接到超类onCreateOptionsMenu()
,你说让它由你的超类处理Activity
。
推荐阅读
- sql-server - 内部连接后如何仅获取最后一行?
- smarty - smarty string_format 不四舍五入
- c# - 无法创建“DbContext”类型的对象
- xml - 由于属性自定义,xjc 在使用剧集时在导入的架构上失败
- reactjs - 如何使用 React.useContext 为 React Hooks 声明“propTypes”
- android - Android 应用程序在第一次运行后未扫描信标
- php - 方法不允许 Http 异常 Ajax 请求
- javascript - 在使用后退按钮双击退出科尔多瓦中的应用程序 jquery 代码并触摸屏幕时,应用程序退出
- oracle-adf - 如何通过托管 bean 填充属性?
- sql - 如何将金额 123.45 显示为 12345