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;
}
438   3  

3 ответов:

On API < 11 использовать supportInvalidateOptionsMenu() метод

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

    Ничего не найдено.