Флажок в меню Android не работает

Я пытаюсь добавить флажок в меню моего приложения для Android. Но я не знаю, почему элемент с атрибутом android:checkable="true" имеет этот квадрат флажка, но ведет себя как другие элементы. Должен ли я что-то писать в java-коде? Я могу прочитать значение, но нажатие не меняет его значение...

Мое меню\main.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/menu_settings"
        android:title="@string/settings"/>
    <item
        android:id="@+id/menu_tests"
        android:title="@string/i_want_to_test"/>
    <item
        android:id="@+id/menu_translating"
        android:enabled="false"
        android:title="@string/i_want_to_translating"/>
    <item
        android:id="@+id/menu_funmade"
        android:checkable="true"
        android:title="Enable funmade"/>

</menu>

Смотреть:

Как выглядит меню

Последний вариант ведет себя как другие без определенного поведения. Я могу нажать, и ману закрывается, а состояние не меняется. Надеюсь, вы можете помочь.

Андрет


person Andret    schedule 29.08.2015    source источник


Ответы (1)


Когда пользователь выбирает элемент из меню параметров (включая элементы действий на панели действий), система вызывает метод onOptionsItemSelected() вашей активности.

Следующий код находится внутри метода onOptionsItemSelected(MenuItem item) в вашей деятельности.

Код:

switch (item.getItemId()) {
        case R.id.menu_settings:
            // Specify actions for the menu click
            return true;
        case R.id.menu_tests:
            // Specify actions for the menu click
            return true;
        case R.id.menu_translating:
            // Specify actions for the menu click
            return true;
        case R.id.menu_funmade:
            // Specify actions for the menu click
            if (item.isChecked()) {
                item.setChecked(false);
            } else {
                item.setChecked(true);
            }
            return true;
    }
    return super.onOptionsItemSelected(item);

Вы можете просмотреть официальную документацию о проверяемых меню для получения более подробной информации. .

person Srikar Reddy    schedule 29.08.2015