Программное закрытие меню параметров

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

@Override
public boolean onMenuOpened(int featureId, Menu menu)
{
    if(menu != null)
    {
        onOptionsItemSelected(menu.getItem(0));
        closeOptionsMenu();
    }
    return super.onMenuOpened(featureId, menu);
}

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

Как закрыть?


person Yonatan Nir    schedule 29.05.2017    source источник
comment
попробуйте добавить invalidateOptionmenu после выбора   -  person Divyesh Patel    schedule 29.05.2017
comment
не помогло ... меню все еще отображается при нажатии назад   -  person Yonatan Nir    schedule 29.05.2017
comment
вы вызываете пункт меню из фрагмента или активности?   -  person Divyesh Patel    schedule 29.05.2017
comment
OnCreateMenu и onOptionItemSelected выполняются на уровне активности.   -  person Yonatan Nir    schedule 29.05.2017
comment
Это AppCompatActivity   -  person Yonatan Nir    schedule 29.05.2017


Ответы (1)


Вы можете программно закрыть меню опций с помощью closeOptionsMenu().

Теперь попробуйте изменить положение closeOptionsMenu(). Назовите это до onOptionsItemSelected().

Ссылка: http://developer.android.com/reference/android/app/Activity.html#closeOptionsMenu

person schinj    schedule 29.05.2017
comment
Смена положения звонка не помогла - person Yonatan Nir; 29.05.2017
comment
хорошо, попробуйте одну вещь, вызовите closeOptionsMenu() в вашей функции onOptionsItemSelected() после выполнения необходимой операции, а не в onMenuOpened(). - person schinj; 29.05.2017
comment
Пробовал звонить до и после самого действия, а меню все равно остается открытым - person Yonatan Nir; 29.05.2017
comment
Я пытаюсь сказать, что вызовите closeOptionsMenu() в вашей реализации onOptionsItemSelected(). Ты сделал это? - person schinj; 29.05.2017
comment
Да. Добавил его туда до и после самого действия которое там вызывается и все равно не помогло - person Yonatan Nir; 29.05.2017