如何使用复选框在片段内的弹出菜单中显示所选项目?

How to show the selected item in popup menu which is inside a fragment using a check box?

我正在使用弹出菜单的图像按钮来弹出,一切正常,但是当我 select 菜单中的一个项目时,该项目被 select 编辑并且不显示selection 以便我可以识别 selected item.The 复选框即使在 selection

之后仍未选中
menu_icon_img=myView.findViewById(R.id.Id_customer_over_flow);
        menu_icon_img.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (getActivity() != null) {
                    PopupMenu popup = new PopupMenu(getActivity(), v);
                    MenuInflater inflater = popup.getMenuInflater();
                    inflater.inflate(R.menu.sort_menu_items, popup.getMenu());
                    popup.show();
                    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                        @Override
                        public boolean onMenuItemClick(MenuItem item) {
                            switch (item.getItemId()) {
                                case R.id.select_name_a_z:
                                 if (item.isChecked()) item.setChecked(false);
                                    else item.setChecked(true);
                                    return true;
                                case R.id.select_name_z_a:
                                    if (item.isChecked()) item.setChecked(false);
                                    else item.setChecked(true);
                                    return true;

                                default:
                                    return false;
                            }
                        }
                    });
                }
            }

XML

<menu xmlns:android="http://schemas.android.com/apk/res/android"
        >
        <group
            android:checkableBehavior="single"
            >
            <item
                android:id="@+id/select_name_a_z"
                android:title="@string/name_a_z"
                android:checkable="true"
                />
            <item
                android:id="@+id/select_name_z_a"
                android:title="@string/name_z_a"
                android:checkable="true"
                />
        </group>
    </menu>

工具栏菜单应该在您点击弹出窗口时导航到指定的活动或片段 up.I 我不确定是什么问题,但是一旦您点击任何 MenuItem,它就会导航到给定的 Intent 关联以 id 为例,

public boolean onMenuItemClick(MenuItem item) {
                            switch (item.getItemId()) {
                                case R.id.select_name_a_z:
                                    Intent intent=new Intent(MainActivity.this,SecondActivity.this);
                                    startActivity(intent);
                                    return true;

如果您使用的是可检查的菜单项,请更改以下代码

 case R.id.select_name_z_a:
                 if (item.isChecked()) 
                     item.setChecked(false);
                 else item.setChecked(true);
                      return true;

喜欢

if (!item.isChecked()) item.setChecked(true);

因为item.ischecked()在开始状态为假

对上面的代码做了一些修改,试试这个

menu_icon_img=findViewById(R.id.Id_customer_over_flow);
popup = new PopupMenu(getApplicationContext(), menu_icon_img);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.sort_menu_items, popup.getMenu());

menu_icon_img.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (this != null) {
            popup.show();
            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    Menu menu = popup.getMenu();
                    for(int i = 0;i<menu.size();i++){
                        menu.getItem(i).setChecked(false);
                    }
                    item.setChecked(true);
                    return true;
                }
            });
        }
    }
});

也适用于菜单集中的所有项目:

android:checkable="true"

问题是您正在通过图像视图的 onClick 创建弹出菜单。每当发生点击事件时,都会创建一个新的弹出菜单实例。

避免这种情况在 onCreate 方法中启动弹出菜单。并从 onClick() 方法调用 popup.show()。