Android invalidateOptionsMenu () для API
Я ActivityCompat.invalidateOptionsMenu(MainActivity.this); Так что мой пункт меню " обновить "может быть автоматически включен/отключен без использования должны коснуться опции" меню " (представьте, что пользователь оставляет меню открытым... Мне нужен пункт меню "обновить", чтобы автоматически отключить и включить себя).
The ActivityCompat.invalidateOptionsMenu(MainActivity.this) отлично работает в Android 11+. Но что я могу использовать для Android API
это прекрасно работает в Android API 11+, используя onPrepareOptionsMenu и ActivityCompat.invalidateOptionsMenu(MainActivity.this).
Проблема пытается сделать это в Android API
вот мой onPrepareOptionsMenu способ:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if(menuRefreshEnable){
menu.getItem(0).setEnabled(true);
}
if(!menuRefreshEnable){
menu.getItem(0).setEnabled(false);
}
return true;
}
3 ответов:
ActivityCompat.invalidateOptionsMenu()не отзвонилисьonPrepareOptionsMenu();Он просто обновляет меню напрямую. Просто положите некоторыеLog.d()и проверить самостоятельно.это работает для меня (я использую API 8):
private Menu mMenu; @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.track_fragment, menu); mMenu = menu; } ... private void someMethod() { ... if (mMenu != null) { MenuItem item = mMenu.findItem(R.id.new_track); if (item != null) { item.setVisible(false); ActivityCompat.invalidateOptionsMenu(this.getActivity()); } } ... }мой
someMethod()вызывается из нескольких мест, даже передonCreateOptionsMenu(), так что я должен проверитьmMenu != null.
Это вернет true, если API выше или равен 11 и поэтому поддерживается. Перед API 11 меню отображается при нажатии кнопки меню, поэтому нет необходимости в этом методе, поскольку он происходит автоматически.
Comments