Переполнение меню не отображается - Android

В моей деятельности есть панель действий с 3 элементами: "Добавить элемент", "Параметры" и "Переполнение". Элемент добавления установлен так, чтобы всегда быть видимым на панели действий, как и элемент переполнения. Моя проблема с пунктом "Параметры" - я хочу, чтобы он отображался в меню переполнения, но всякий раз, когда я нажимаю на элемент переполнения (значок с 3 точками), он просто ничего не делает. Однако, если я нажимаю кнопку встроенного меню на устройстве, оно показывает мне меню переполнения с моим пунктом Параметры.

Поэтому мой вопрос - почему, когда я нажимаю на значок переполнения, ничего не происходит, но когда я нажимаю кнопку встроенного меню на устройстве, оно показывает мне меню переполнения?

Вот мой код меню XML:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto" >

    <item
        android:id="@+id/action_add"
        android:icon="@drawable/ic_action_new"
        android:showAsAction="ifRoom"
        android:title="@string/action_add_ringtone"/>

    <item
        android:id="@+id/action_set_options"
        android:showAsAction="never"
        android:title="Options" />

    <item
        android:id="@+id/action_settings"
        android:icon="@drawable/ic_action_overflow"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:title="@string/action_settings"/>

</menu>

Вот моя реализация для onOptionsItemSelected:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        switch (id) {
        case R.id.action_settings:
            return super.onOptionsItemSelected(item);
        case R.id.action_add:
            pickRingtone(1000);
            return true;
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

1 ответ

Решение

Вам нужно будет переопределить onCreateOptionsMenu метод (Ctrl+O в Android Studio).

@Override
public void onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.your_menu_name, menu);
}

Для фрагмента MenuInflater будет уже параметром, и вам нужно будет позвонить setHasOptionsMenu(true); где-то, например, в конце onCreate также.

Другие вопросы по тегам