Ich habe dieses einfache PopupMenu, aber wenn ich auf ein Element klicke, wird das Element nicht überprüft. Warum?Android PopupMenu checkable Element überprüft nicht
In der Dokumentation ist: Menüelemente im Symbolmenü (aus dem Optionsmenü) können kein Kontrollkästchen oder Optionsfeld anzeigen. Radiotaste angezeigt wird, aber nur Zustand ändert sich nicht ...
Java
public void showSortPopup() {
View menuItemView = findViewById(R.id.action_sort);
PopupMenu popup = new PopupMenu(this, menuItemView);
popup.inflate(R.menu.sort);
popup.getMenu().findItem(R.id.sort_def).setChecked(true);
popup.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.sort_def:
sortOrder = CardCursorContract.CardCursor.DEFAULT_SORT;
mCardsFragment.setSortOrder(sortOrder);
savePref();
if (item.isChecked()) item.setChecked(false);
else item.setChecked(true);
break;
case R.id.sort_asc:
sortOrder = CardCursorContract.CardCursor.ALPHABETICAL_ASC_SORT;
mCardsFragment.setSortOrder(sortOrder);
savePref();
if (item.isChecked()) item.setChecked(false);
else item.setChecked(true);
break;
case R.id.sort_desc:
sortOrder = CardCursorContract.CardCursor.ALPHABETICAL_DESC_SORT;
mCardsFragment.setSortOrder(sortOrder);
savePref();
if (item.isChecked()) item.setChecked(false);
else item.setChecked(true);
break;
default:
break;
}
return false;
}
});
popup.show();
}
XML-Datei
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item android:id="@+id/sort_def"
android:title="@string/action_sort_def"
android:orderInCategory="1"
android:showAsAction="always" />
<item android:id="@+id/sort_asc"
android:title="@string/action_sort_name"
android:orderInCategory="2"
android:showAsAction="always" />
<item
android:id="@+id/sort_desc"
android:title="@string/action_sort_name_desc"
android:orderInCategory="3"
android:showAsAction="always"/>
</group>
Bildschirm
Es macht keinen Sinn, aber ich versuchte es und immer noch funktioniert es nicht ... – Tomas