#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
.