É possível alterar os itens do menu de opções programaticamente? Alguém pode me dar um exemplo, por favor?
Além disso, quero desabilitar alguns itens, para que não escutem os cliques, é possível?
Para qualquer um precisa alterar as opções do menu dinamicamente:
private Menu menu;
// ...
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
this.menu = menu;
getMenuInflater().inflate(R.menu.options, menu);
return true;
}
// ...
private void hideOption(int id)
{
MenuItem item = menu.findItem(id);
item.setVisible(false);
}
private void showOption(int id)
{
MenuItem item = menu.findItem(id);
item.setVisible(true);
}
private void setOptionTitle(int id, String title)
{
MenuItem item = menu.findItem(id);
item.setTitle(title);
}
private void setOptionIcon(int id, int iconRes)
{
MenuItem item = menu.findItem(id);
item.setIcon(iconRes);
}
menu
foi definido antes de tentar obter umMenuItem
resultado. Por exemplo, se você tiver algo comoactionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS)
, as guias são carregadas antes do menu, portanto, chamarhideOption
/showOption
dentroonTabSelected
resulta em uma exceção de ponteiro nulo.item.setVisible(false);
, o item só fica oculto quando clico no próprio Menu. Se eu usarinvalidateOptionsMenu();
o item não responda ao clique. Agradeço se você puder me ajudar em um problema semelhante que estou enfrentando. stackoverflow.com/questions/54756799/…setVisible
indica que você também deve ligar,setEnabled(false)
caso contrário, o item ainda pode ser invocado por meio de seu atalhomenu.xml
coloque em seu arquivo java
fonte
Como Nikolay disse, faça isso em onPrepareOptionsMenu ().
Para itens de menu na barra de ação, você deve invalidar o menu com
activity.invalidateOptionsMenu();
Isso é descrito com mais detalhes aqui. Como posso atualizar a ActionBar quando onPrepareOptionsMenu alterna as entradas do menu?
fonte
Se eu tiver que mudar o conteúdo do meu menu de opções, eu faço durante o onMenuOpened (). Isso me permite verificar o estado de execução no momento em que o usuário está acessando o menu.
fonte
Para desativar certos itens:
fonte
item.setVisible(false);
, meu item só fica oculto quando eu clico no próprio Menu (três pontos). Se eu usarinvalidateOptionsMenu();
alguns itens não respondem ao clique. Agradeço se você puder me ajudar em um problema semelhante que estou enfrentando. stackoverflow.com/questions/54756799/…usando as seguintes linhas eu fiz para adicionar os valores no menu
tente este trabalho como um encanto para mim.
fonte
Experimente este código:
fonte
invalidateOptionsMenu();
, meus itens sempre visíveis param de funcionar (quero dizer, os itens não respondem ao clique). Agradeço se você puder me ajudar em um problema semelhante que estou enfrentando. stackoverflow.com/questions/54756799/…Você pode fazer algo simples como eu fiz. Basta alterar o texto para o que é necessário quando o item de menu é tocado. Eu precisava desligar e ligar o som, além da capacidade de realizar uma ação ao tocá-lo. Aqui está o meu código:
audioOn e touchOn são booleanos verificados em outras partes do código. Espero que isto ajude.
fonte
você pode realizar sua tarefa simplesmente implementando o seguinte:
fonte
Caso você tenha uma BottomBar:
Então você só precisa ligar para:
fonte
Código Kotlin para acessar os itens do menu Opções da barra de ferramentas de forma programática e alterar o texto / ícone ..:
1-Temos nosso item de menu no arquivo de itens de menu como: menu.xml, código de amostra para este:
2- Defina uma variável para acessar o objeto de menu na classe:
3- inicialize-o em onCreateOptionsMenu:
4- Acesse os itens do menu dentro do seu código ou diversão:
fonte
fonte