Android-Menücode funktioniert nicht

Ich habe versucht herauszufinden, warum sich mein Boolescher Wert nicht ändert, wenn ich den Knopf drücke. Wenn ich ihn manuell geändert habe, hat es funktioniert, aber es macht nichts. Ich habe versucht, Tutorials zu dem Wort zu folgen, aber sie funktionieren nicht. Kann jemand darauf hinweisen, wo ich falsch liege?

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); 
    } 

Danke für all deine Hilfe, als ich den vorgeschlagenen Code ausprobierte und es nicht funktionierte, ging ich zurück und änderte das Menü. Zuvor hatte ich eine Schaltfläche mit einem onClick erstellt, um das Menü zu erstellen, als das Symbol mit Code erstellt wurde, funktionierte der Code, den ich zuvor geschrieben hatte, gut. Hoffe, das hilft jemandem anders als mir, also fühle ich mich nicht wie ein Idiot.}

2
hinzugefügt bearbeitet
Ansichten: 1
hinzugefügt der Autor Praveenkumar, Quelle
Ich denke, es ist ein Tippfehler. einfrieren! = fräsen
hinzugefügt der Autor 2619, Quelle
Lass uns keine voreiligen Schlüsse ziehen. Im obigen Code ist "freze" möglicherweise (und wahrscheinlich ist es) ein boolesches Element der enthaltenden Klasse, das anders als "freeze" geschrieben wurde, um eine Kollision mit der lokalen Variablen in der Methode zu vermeiden (obwohl ich persönlich lieber das Stichwort in ähnlichen Situationen).
hinzugefügt der Autor Kallja, Quelle
@ user1462846 Konnten Sie Ihre Menüdefinitions-XML (oder den Erstellungscode, wenn Sie es so machen) posten. Haben Sie überprüft, ob Sie die richtigen IDs mit Ihren Menüpunkten verwenden?
hinzugefügt der Autor Kallja, Quelle
@ droids Das ist nicht das Problem hier. Die switch-Anweisung verwendet den primitiven Typ int, der tatsächlich als Wert übergeben wird. Zusätzlich gibt die Android-Plattform gewisse Garantien für Objekte, die von der findViewById (int) -Methode zurückgegeben werden.
hinzugefügt der Autor Kallja, Quelle
Sie meinen freeze , nicht freze . Das würde dir allerdings einen Kompilierungsfehler bescheren, also vermute ich, dass es ein Tippfehler ist.
hinzugefügt der Autor keyser, Quelle
In Java folgen alle Typen Pass-by-Value. Ich denke, das ist der Grund, warum Sie mit diesem Problem konfrontiert sind.
hinzugefügt der Autor Zombie, Quelle
@Jarkko danke, dass du dir Zeit genommen hast, es zu erklären. Da die Frage nicht so klar ist, dachte ich, dass der boolesche Wert freze keine Änderungen innerhalb des Schalters außerhalb der switch-Anweisung erhält und diese kommentiert. jedenfalls war es hilfreich für mich zu verstehen.
hinzugefügt der Autor Zombie, Quelle

1 Antworten

Erstellen Sie im Ordner "res" ein Ordnermenü, wie es gezeichnet werden kann

Erstellen Sie eine neue XML-Datei optionmenu.xml in diesem Ordner.

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

In onCreate Methode schreibe diesen Code ....

setOptionMenu(R.menu.optionmenu);

und in overide Methode von Menu schreibe diesen Code .....

@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
hinzugefügt