嗨下面是我用来在FragmentActivity中创建选项菜单的代码: -
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
// Menu options to set and cancel the alarm.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// When the user clicks START ALARM, set the alarm.
case R.id.start_action:
alarm.setAlarm(this);
return true;
// When the user clicks CANCEL ALARM, cancel the alarm.
case R.id.cancel_action:
alarm.cancelAlarm(this);
return true;
}
return false;
}
有人会告诉我它为什么不起作用吗?它不会影响应用程序,但当我从设备单击选项菜单按钮时,没有任何事情发生。请帮助解决此问题。 提前谢谢!
下面是我的main.xml: -
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/start_action"
android:showAsAction="ifRoom|withText"
android:title="@string/start_text" />
<item android:id="@+id/cancel_action"
android:showAsAction="ifRoom|withText"
android:title="@string/cancel_text" />
</menu>
答案 0 :(得分:1)
返回Switch案例中的项目。 IT对我有用。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// When the user clicks START ALARM, set the alarm.
case R.id.start_action:
alarm.setAlarm(this);
return true;
// When the user clicks CANCEL ALARM, cancel the alarm.
case R.id.cancel_action:
alarm.cancelAlarm(this);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
答案 1 :(得分:0)
虽然这个问题很老但是关闭它是我认为代码中缺少OP的原因
在
中onCreateOptionsMenu
使用super返回它作为super.onCreateOptionsMenu(menu);
并在
中onOptionsItemSelected
将super作为super.onOptionsItemSelected(item);
返回所有返回类型都是布尔值,因此当它返回true时你会知道它正常工作。它就像simina到super.onCreate(savedInstancestate)。
答案 2 :(得分:-1)
更改
return false;
到
return super.onOptionsItemSelected(item);
as
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// When the user clicks START ALARM, set the alarm.
case R.id.start_action:
alarm.setAlarm(this);
return true;
// When the user clicks CANCEL ALARM, cancel the alarm.
case R.id.cancel_action:
alarm.cancelAlarm(this);
return true;
}
return super.onOptionsItemSelected(item);
}
编辑:
此外,您必须将以下内容添加到Fragment
setHasOptionsMenu(true);