Search code examples
androidandroid-layoutandroid-fragmentsselectionpopupmenu

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


I am using an image button for a popup menu to popup everything is working fine but when I select an item in the menu the item is selected and it doesn't show the selection so that I could identify the selected item.The checkbox remains unchecked even after 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>

Solution

  • The problem is you are creating the popup menu from onClick of an imageview. whenever a click event occures a new instance of popup menu is being created.

    to avoid this initiate the popup menu in onCreate method. And call popup.show() from onClick() method.