Открытие всплывающего меню вместо стандартного меню панели действий - PullRequest
0 голосов
/ 27 ноября 2018

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

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

<group android:id="@+id/grp_filtro_selezione" android:checkableBehavior="all">
    <item android:id="@+id/menu_all"
        android:src="@drawable/ic_settings"
        android:title="@string/all_menu"
        android:checked="true"/>
    <item android:id="@+id/menu_aule"
        android:src="@drawable/ic_settings"
        android:title="@string/aule_menu"
        android:checked="false"/>
    <item android:id="@+id/menu_aule_studio"
        android:src="@drawable/ic_settings"
        android:title="@string/aule_studio_menu"
        android:checked="false"/>
</group>
</menu>

Я не могу понять, как я могу использовать свое всплывающее меню с чем-то вроде этого:

 PopupMenu popup = new PopupMenu(MainActivity.this, v);
 popup.getMenuInflater().inflate(R.menu.pop_up, popup.getMenu());

и отключение стандартного меню панели действий.

Я думаю, что мне следует использовать onCreateOptionsMenu ()

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.mymenu, menu);

}

, но как я могу надуть мое всплывающее меню?

РЕДАКТИРОВАТЬ:

Я почти нашел решение, но у меня есть одна проблема.Итак, что я сделал, в onCreateOptionsMenu, я надувал меню, которое включает в себя только значки панели действий:

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.prova_menu, menu);
}

И в onOptionsItemSelected я пробовал это:

switch (item.getItemId()) {
        case R.id.settings:
            View menuItemView = getActivity().findViewById(R.id.settings); 
            popupMenu = new PopupMenu(getActivity(), menuItemView);
            popupMenu.inflate(R.menu.prova2);
            popupMenu.show();
}

Работает нормально, но есть проблема.Во всплывающем меню, которое я показываю, есть выбираемые пункты.Когда я нажимаю значок, чтобы открыть меню снова, все элементы сбрасываются, вероятно, потому что я раздуваю расположение меню каждый раз, когда я показываю всплывающее меню.Я пытался раздувать всплывающее меню только один раз в onCreateOptionsMenu, но я получаю эту ошибку при вызове popupMenu.show ().

 MenuPopupHelper cannot be used without an anchor

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Вам не хватает вызова popup.show ()?

0 голосов
/ 27 ноября 2018

Я думаю, что вы, скорее всего, используете onCreateOptionsMenu вместо onCreateContextMenu.

Посмотрите описание API или Руководство по обучению в меню

...