java - OnCreateOptions 它被调用,但 OnOptionsItemSelected 它未被调用
问题描述
我有一个带有设置菜单项的 xml,我有一个按钮可以打开 OptionsMenu 并且它正在工作,但是当我在 OptionsMenu 中选择某些内容时,它不再被调用
这是我的代码。
主要活动
private PopupMenu mPopupMenu;
ImageButton settings = findViewById(R.id.buttonSettings);
mPopupMenu = new PopupMenu(this, settings);
MenuInflater menuInflater = mPopupMenu.getMenuInflater();
menuInflater.inflate(R.menu.main_settings, mPopupMenu.getMenu());
settings.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPopupMenu.show();
}
});
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_settings, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if(id == R.id.menuNightMode) {
openDialog();
return true;
}
return super.onOptionsItemSelected(item);
}
public void openDialog() {
DialogNightMode dialogNightMode = new DialogNightMode();
dialogNightMode.show(getSupportFragmentManager(), "test");
}
这是 XML
<ImageButton
android:id="@+id/buttonSettings"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginEnd="10dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="17dp"
android:background="@color/transparent"
android:tint="@color/gray"
android:src="@drawable/ic_settings_black_24dp" />
菜单的 Xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/menuNightMode" android:title="@string/MainPageMenuNight" />
</menu>
解决方案
您的代码丢失了MenuItemClickListener
,您需要将其设置为您的PopupMenu
.
设置如下
popup.show();
//Set on click listener for the menu
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if(id == R.id.menuNightMode) {
openDialog();
}
return false;
}
});
推荐阅读
- python - Python:如何将 csv 数据转换为数组
- batch-file - 带有空格的 .ZIP 文件名在创建和解压缩批处理时无法正常工作
- entity-framework - 批处理实体框架查询以提高效率
- swagger - 为 hybris 自定义 API 生成 Swagger 文档
- jenkins - Jenkins 构建状态图标未显示在 github 中
- amazon-web-services - Amazon Neptune IAM 通过 Websocket 进行身份验证
- oracle - 在 oracle 存储过程中对对象数组进行字符串化
- php - 如何使用 Eloquent 获取最后 9 条记录但排除具有特定 ID 的记录?
- java - 向数组列表添加和更新新元素
- c# - 更新 ObservableCollection 的最有效方法是什么?