Открытие всплывающего меню вместо стандартного меню панели действий

Marco Ripamonti спросил: 03 ноября 2018 в 09:12 в: android

Поскольку я не могу предотвратить закрытие меню панели действий по умолчанию после выбора элемента, я подумал об использовании всплывающего меню. Я хочу использовать всплывающее меню с тем же макетом меню панели действий 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

0 ответов