Android invalidateOptionsMenu () dla API <11
Użyłem ActivityCompat.invalidateOptionsMenu(MainActivity.this);
tak, że mój element menu "Odśwież" może być automatycznie włączony / wyłączony bez konieczności korzystania z opcji "Menu" (wyobraź sobie, że użytkownik pozostawia Menu otwarte... Potrzebuję pozycji menu "Odśwież", aby automatycznie wyłączyć i włączyć się).
The ActivityCompat.invalidateOptionsMenu(MainActivity.this)
działa dobrze w Androidzie 11+. Ale czego mogę użyć dla android API
To działa dobrze w Android API 11+, przy użyciu onPrepareOptionsMenu
i ActivityCompat.invalidateOptionsMenu(MainActivity.this)
.
Problem polega na próbie zrobienia tego w Android API
Oto moja metoda onPrepareOptionsMenu
:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if(menuRefreshEnable){
menu.getItem(0).setEnabled(true);
}
if(!menuRefreshEnable){
menu.getItem(0).setEnabled(false);
}
return true;
}
3 answers
On API < 11
use supportInvalidateOptionsMenu()
method
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-18 11:10:27
ActivityCompat.invalidateOptionsMenu()
nie oddzwania {[2] } to po prostu aktualizuje menu bezpośrednio. Po prostu włóż trochę Log.d()
i sprawdź sam.
To działa dla mnie (używam 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());
}
}
...
}
Moje someMethod()
dzwonią z kilku miejsc, nawet przed onCreateOptionsMenu()
, więc muszę sprawdzić mMenu != null
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-23 06:05:16
Zwróci true, jeśli API jest powyżej lub równe 11 i dlatego jest obsługiwane. Przed API 11 menu jest rysowane po naciśnięciu przycisku menu, więc nie ma potrzeby stosowania tej metody, ponieważ dzieje się to automatycznie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-23 04:15:01