У меня есть пункт меню для сортировки. Когда пользователь нажимает на нее, создается PopupMenu с параметрами сортировки.
Теперь я создал RadioButtons для каждого из элементов, но, похоже, нет способа установить выбранный переключатель в проверенное состояние. Я не знаю, что происходит.
Вот мое меню.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, чтобы я мог проверить его программно вне обратного вызова?
popmenu.getMenu().getItem(int)
это то, что вы хотите? - person Elltz   schedule 30.06.2015