Pergunta

Meu problema é que tenho uma tabactividade, que tem 4 guias no momento. A primeira guia é um TAB de detalhes especiais, onde o usuário pode modificar alguns dados.

O problema é que, se eu adicionar um Menu de opções para a atividade, o OptionsMenu estará aparecendo em cada guia. Eu tentei verificar o atual mtabhost.getCurrentTabtag () no OnCreateOptionsMenu Mas isso não mudou nada. Então, como fazer isso?

(O código a seguir, que ainda mostra o OptionsMenu em cada guia)

 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);
 } 
Foi útil?

Solução

Vejo que você está comparando strings (tags de fato) com ==, geralmente, isso é melhor para fazer isso com .equals() método. Talvez isso resolva seu problema.
Para atualizar dinamicamente um menu de opções (da documentação):

Se você deseja alterar o menu de opções cada vez que ele abrir, você deve substituir o onPreparoptionsmenu ()

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top