Возможно ли изменить меню в режиме реального времени?

#android #android-activity #menu #layout-inflater

#Android #android-активность #меню #макет-надуватель

Вопрос:

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

Можно ли это сделать? Прямо сейчас я не знаю, как это сделать, потому что я вижу такие строки:

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}
  

и я не знаю, могу ли я «повторно раздуть» меню в режиме реального времени / изменить параметры / и т. Д.

Комментарии:

1. читали ли вы об изменении пунктов меню во время выполнения из документов Android?

Ответ №1:

Вот так я это делаю:

 @Override
public boolean onPrepareOptionsMenu(Menu menu) {
       if(condition1){
           MenuInflater inflater = getMenuInflater();
           inflater.inflate(R.menu.menu_1, menu);
       }else{ 
           MenuInflater inflater = getMenuInflater();
           inflater.inflate(R.menu.menu_2, menu);
       }
       return super.onPrepareOptionsMenu(menu);
}
  

Ответ №2:

Да, вы можете. Основная идея заключается в том, что вы получаете экземпляр MenuInflater via getMenuInflater() , а затем раздуваете свой XML-файл меню. Это не ограничено вашей активностью / фрагментом onCreateOptionsMenu() или onPrepareOptionsMenu() .

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