Codul de meniu Android nu funcționează

Am încercat să-mi dau seama de ce booleanul meu nu se schimbă când apăs butonul, când l-am schimbat manual, a funcționat, dar nu face nimic. Am încercat să urmez tutoriale la cuvânt, dar nu funcționează. Poate cineva să indice unde mă îndrept?

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

Vă mulțumim pentru tot ajutorul dvs., când am încercat codul care a fost sugerat și nu a funcționat M-am întors și mi-am schimbat meniul. Anterior, am făcut un buton cu un onClick pentru a crea meniul, când a fost creată pictograma cu codul pe care l-am scris anterior. Sper că acest lucru îi ajută pe altcineva decât pe mine, așa că nu mă simt ca un idiot.}

2
adăugat autor Praveenkumar, sursa
Cred că eroarea sa tipo. îngheț! = freza
adăugat autor 2619, sursa
Să nu ajungem la concluzii. În codul de mai sus, "freza" ar putea fi (și probabil este) un membru boolean al clasei care conține limbajul diferit de "freeze" pentru a evita o coliziune cu variabila locală în metodă (deși eu personal prefer să folosesc acest " cuvinte cheie în situații similare).
adăugat autor Kallja, sursa
@ user1462846 Ați putea posta definiția meniului xml (sau codul de creație dacă îl faceți în acest fel). Ați verificat dublu că utilizați ID-urile corecte cu elementele de meniu?
adăugat autor Kallja, sursa
@droids Nu este problema aici. Instrucțiunea switch utilizează tipul int primitiv, care într-adevăr este trecut prin valoare. În plus, platforma Android oferă anumite garanții cu privire la obiectele returnate de metoda findViewById (int).
adăugat autor Kallja, sursa
Vrei să spui freeze , nu freze . Asta îți va da o eroare de compilare, așa că eu presupun că este o greșeală.
adăugat autor keyser, sursa
în java toate tipurile urmează urmărirea după valoare. Cred că acesta este motivul pentru care vă confruntați cu această problemă.
adăugat autor Zombie, sursa
@Jarkko mulțumesc pentru că ați luat timp pentru a explica. Întrucât întrebarea nu este atât de clară am crezut că mozaicul de valoare boolean nu primește modificări efectuate în comutatorul în afara instrucțiunii switch și a comentat acest lucru. oricum, a fost util pentru mine în înțelegere.
adăugat autor Zombie, sursa

1 răspunsuri

În directorul Res creați un meniu de folder ca și trasabil

Creați un nou fișier xml optionsmenu.xml în acel folder.

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

În metoda onCreate scrieți acest cod ....

setOptionMenu(R.menu.optionmenu);

și în metoda override de meniu scrie acest cod .....

@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
adăugat
Android dezvoltatori, România — Moldova
Android dezvoltatori, România — Moldova
27 participanți

Parteneri: ciupacabra.com, @php_ro, @js_ro, @node_ro iOS: @ro_ios Reguli: https://github.com/js-ro/it-telegram/blob/master/RULES.md