código de menu android não está funcionando

Eu tenho tentado descobrir porque o meu booleano não está mudando quando eu pressiono o botão, quando eu mudei manualmente funcionou, mas não faz nada. Eu tentei seguir os tutoriais para a palavra, mas eles não funcionam. Alguém pode apontar onde eu estou indo errado?

public boolean onOptionsItemSelected(MenuItem menu) 
{
    MenuItem freeze = (MenuItem)findViewById(R.id.freeze);  
   //Handle item selection 
    switch (menu.getItemId()) { 
        case R.id.freeze: 
            if (freze == false){
                freze = true;
            } else {
                freze = false;
            }
            return true; 
        case R.id.toggleVolCount: 
            if (toggleVol == true){
                toggleVol = false;
            } else {
                toggleVol = true;
            }
            return true; 
        default: return super.onOptionsItemSelected(menu); 
    } 

Obrigado por toda sua ajuda, quando eu tentei o código que foi sugerido e não funcionou, voltei e mudei o menu. Anteriormente eu tinha feito um botão com um onClick para criar o menu, quando criei o ícone com código o código que eu havia escrito anteriormente funcionou bem. Espero que isso ajude alguém que não seja eu, então não me sinto tão idiota.}

2
adicionado editado
Visualizações: 1
adicionado o autor Praveenkumar, fonte
Eu acho que é um erro de digitação. congelar! = freze
adicionado o autor 2619, fonte
Não vamos tirar conclusões precipitadas. No código acima, 'freze' pode muito bem ser (e provavelmente é) um membro booleano da classe que contém soletrado diferentemente de 'freeze' para evitar uma colisão com a variável local no método (embora eu pessoalmente prefira usar este método). palavra-chave em situações semelhantes).
adicionado o autor Kallja, fonte
@ user1462846 Você poderia postar seu xml de definição de menu (ou código de criação se você estiver fazendo dessa forma). Você já verificou se está usando as identificações corretas nos itens de menu?
adicionado o autor Kallja, fonte
@droids Esse não é o problema aqui. A instrução switch está usando o tipo primitivo int, que de fato é passado por valor. Além disso, a plataforma Android faz certas garantias sobre objetos retornados pelo método findViewById (int).
adicionado o autor Kallja, fonte
Você quer dizer freeze , não freze . Isso vai te dar um erro de compilação, então eu acho que é um erro de digitação.
adicionado o autor keyser, fonte
em java, todos os tipos seguem a passagem por valor. Eu acho que essa é a razão pela qual você está enfrentando esse problema.
adicionado o autor Zombie, fonte
@Jarkko obrigado por ter tempo para explicar. Uma vez que a questão não está tão clara, eu pensei que o valor do booleano freze não está recebendo mudanças feitas dentro do switch para fora da instrução switch e comentou isso. de qualquer forma, foi útil para mim na compreensão.
adicionado o autor Zombie, fonte

1 Respostas

Na pasta res, crie um menu de pastas como drawable

Crie o novo arquivo xml optionmenu.xml nessa pasta.

<?xml version="1.0" encoding="utf-8"?>
 

No método onCreate, escreva este código ....

setOptionMenu(R.menu.optionmenu);

e no método overide do Menu escreva este código .....

@Override
    public boolean onOptionsItemSelected(MenuItem menu) {
        switch (menu.getItemId()) {
        case R.id.menuitem:
            startActivity(new Intent(this, Prefs.class));
            break;

case R.id.menuitem1:
            startActivity(new Intent(this, Prefs1.class));
            break;
        default:
            break;
        }

        return true;
    }
1
adicionado