vendredi 21 octobre 2016

Popup menu checkable behavior not working

I have a menu resource file like this :

<menu xmlns:android="http://ift.tt/nIICcg"
    >
    <group android:checkableBehavior="single">

        <item android:id="@+id/sort_all"
            android:title="All"
            android:orderInCategory="1" />

        <item android:id="@+id/sort_co"
            android:title="CoAuthors"
            android:orderInCategory="2" />

        <item
            android:id="@+id/sort_title"
            android:title="Title"
            android:orderInCategory="3" />
        <item
            android:id="@+id/sort_journal"
            android:title="Journals"
            android:orderInCategory="4" />
        <item
            android:id="@+id/sort_year"
            android:title="Year"
            android:orderInCategory="5" />

    </group>
</menu>

and I'm using it on a popup menu :

        final PopupMenu popup = new PopupMenu(MainActivity.this, btn1);
        //Inflating the Popup using xml file
        popup.getMenuInflater().inflate(R.menu.search_menu, popup.getMenu());

        //registering popup with OnMenuItemClickListener
        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()) {

                    case R.id.sort_co:
                        popup.getMenu().findItem(item.getItemId()).setChecked(true);
                        return true;

                    case R.id.sort_title:


                        item.setChecked(true);


                        return true;

                    case R.id.sort_journal:

                        item.setChecked(true);

                        return true;

                    case R.id.sort_year:

                        item.setChecked(true);

                        return true;
                    case R.id.sort_all:

                        item.setChecked(true);

                        return true;


                    default:
                        return true;
                }
            }

        });
        popup.show();
    }
});

as you can see i have tried using

item.setChecked(true) and

popup.getMenu().findItem(item.getItemId()).setChecked(true);

but the problem is when i click on items just before closing menu, item gets checked but when i reopen the menu again, it is not checked ! I've also tried using

MenuItem subMenuItem = item.getSubMenu().getItem(INDEX_OF_ITEM); 
subMenuItem.setChecked(!subMenuItem.isChecked());

but it gives me NullPointerException... . any ideas ?




Aucun commentaire:

Enregistrer un commentaire