Android 如何在FragmentActivity中创建选项菜单?
下面是我在“碎片活动”中创建选项菜单时使用的代码:-Android 如何在FragmentActivity中创建选项菜单?,android,android-fragmentactivity,optionmenu,Android,Android Fragmentactivity,Optionmenu,下面是我在“碎片活动”中创建选项菜单时使用的代码:- @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); getMenuInflater().inflate(R.menu.main, menu); return true; } // Menu options to set and can
@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>
更改
return false;
到
作为
编辑:
您还必须将以下内容添加到片段中
setHasOptionsMenu(true);
返回开关盒内的项目,如。这是我的工作
@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);
}
}
虽然这个问题很老了,但在这里结束它是我认为OP在代码中缺少的 在 OnCreateOptions菜单 将其与super一起返回为super.onCreateOptions菜单(菜单) 在 OnOptions项目已选定 将其与super一起返回为super.onOptionsItemSelected(item)
所有的返回类型都是布尔型的,因此当它返回true时,您将知道它工作正常。它类似于super.onCreate(savedInstancestate)。您是否已将SetHasOptions菜单(true)添加到片段中?@AdityaGupta:-这是一个片段活动。我是否必须在我正在该FragmentActivity上创建的每个fragment中添加SetHasOptions菜单(true)?是的,如果该fragment希望参与选项菜单处理。我按照您的建议尝试了,但没有发生任何事情。经历这一切-对不起,什么也没发生。和以前一样,在选项菜单单击时没有发生任何事情。
setHasOptionsMenu(true);
@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);
}
}