【发布时间】:2015-06-30 03:30:16
【问题描述】:
我有一个用于排序的菜单项。当用户单击它时,会创建一个带有排序选项的 PopupMenu。
现在我已经为每个项目创建了 RadioButtons,但似乎无法将选定的单选按钮设置为选中状态。我不知道出了什么问题。
这是我的 menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
android:id="@+id/group"
android:checkableBehavior="single">
<item
android:id="@+id/fileName"
android:title="Name" />
<item
android:id="@+id/fileDate"
android:title="Date" />
</group>
</menu>
这就是我在 onOptionsItemSelected() 中的内容
if (id == R.id.sort) {
final PopupMenu popupMenu = new PopupMenu(getActivity(), view);
popupMenu.getMenuInflater().inflate(R.menu.sort_menu, popupMenu.getMenu());
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
int id = item.getItemId();
if (id == R.id.fileName) {
sortOrder = 0;
} else if (id == R.id.fileDate) {
sortOrder = 1;
} else if (id == R.id.fileSizeInc) {
sortOrder = 2;
} else if (id == R.id.fileSizeDec) {
sortOrder = 3;
}
item.setChecked(!item.isChecked());
return true;
}
});
popupMenu.show();
}
谁能帮我解决?
更新
我从@gfpacheco 的回答中意识到了错误。我需要在显示弹出菜单之后而不是在它之前执行此操作。但问题是如何获取特定点击的 MenuItem 以便我可以在回调之外以编程方式对其进行检查?
【问题讨论】:
-
@DanielNugent 在第一行就提到了这一点。
-
检查这个post。你的答案就在那里.. 也永远记得承认一个帖子
-
我看到了。这里不是这样。
-
好的,所以您想获取被点击的特定菜单项并在您的 menuItem 界面之外检查它吗?如果是这种情况,您知道什么项目带您或为您做什么,所以如果第一个项目在该视图中打开一个视图,您会通过
popmenu.getMenu().getItem(int)之类的方式找到您的菜单项,这就是您想要的吗?
标签: android menuitem android-menu