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);
 } 
È stato utile?

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 ()

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top