Optionsmenu in un TabActivity per una specifica scheda
-
25-09-2019 - |
Domanda
Il mio problema è che ho un TabActivity, che ha 4 schede al momento. La prima scheda è una speciale Dettagli-Tab, in cui l'utente potrebbe modificare alcuni dati.
Il problema è che se aggiungo un OptionsMenu per l'attività, che l'OptionsMenu sta comparendo su ogni scheda. Ho cercato di verificare la corrente di mTabHost.getCurrentTabTag () nella onCreateOptionsMenu , ma che non ha cambiato nulla. Quindi, come fare?
(Il codice seguente, che mostra ancora l'OptionsMenu su ogni scheda)
public boolean onCreateOptionsMenu(Menu menu) {
if(mTabHost.getCurrentTabTag()==getString(R.string.tab_details)) {
boolean result = super.onCreateOptionsMenu(menu);
menu.add(0, EDIT_ID, 0, R.string.menu_edit).setIcon(R.drawable.edit);
return result;
}
return true;
}
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()) {
case EDIT_ID: {
Toast.makeText(this, "o.O", Toast.LENGTH_LONG).show();
}
}
return super.onMenuItemSelected(featureId, item);
}
Soluzione
vedo che si sta confrontando stringhe (tag in realtà) con ==, di solito, questo è più bello di farlo con il metodo .equals()
. Forse sarà risolvere il tuo problema.
Per aggiornare in modo dinamico un menu di opzioni (dalla documentazione):
Se si desidera modificare le opzioni Menu ogni volta che si apre, è necessario ignorare l'onPrepareOptionsMenu ()