CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: bluemask con ben 3 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 9 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 31 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 2 su 2
Discussione:

enable/disable MenuItem

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano


    Registrato dal
    Feb 2015
    Messaggi
    185

    Ringraziamenti
    2
    Ringraziato 14 volte in 14 Posts
    Predefinito

    enable/disable MenuItem

    Sono sempre a chiedere aiuto, lo so
    Vorrei cambiare la proprietà Enabled di una voce di menù alla selezione di un'altra.
    In pratica se viene selezionata la stagione 2014-15 deve essere abilitata la sola stagione 2015-16 e viceversa

    Questo funziona (determina da subito l'ultima scelta e adegua il menù):
    codice:
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.menu_main, menu);
            MenuItem m14 = menu.findItem(R.id.menu_201415);
            MenuItem m15 = menu.findItem(R.id.menu_201516);
            TextView t2 = (TextView) this.findViewById(R.id.textView2);
            switch (t2.getText().toString()) {
                case ("Stagione 201415"):
                    m14.setEnabled(false);
                    m15.setEnabled(true);
                    break;
                case ("Stagione 201516"):
                    m14.setEnabled(true);
                    m15.setEnabled(false);
                    break;
            }
            return true;
        }
    Invece questo (in "onOptionsItemSelected") non funziona:
    codice:
            if (id == R.id.menu_201415) {
                TextView t2 = (TextView) this.findViewById(R.id.textView2);
                t2.setText("Stagione 201415");
                MenuItem m14 = menu.findItem(R.id.menu_201415);
                MenuItem m15 = menu.findItem(R.id.menu_201516);
                m14.setEnabled(false);
                m15.setEnabled(true);
    
                return true;
            }
    e viceversa true/false alla selezione dell'altro menù

    l'errore è:
    java.lang.NullPointerException: Attempt to invoke interface method 'android.view.MenuItem android.view.Menu.findItem(int)' on a null object reference

    ma il riferimento null di cui parla viene suggerito da Android Studio ... help

  2.  
  3. #2
    Androidiano


    Registrato dal
    Feb 2015
    Messaggi
    185

    Ringraziamenti
    2
    Ringraziato 14 volte in 14 Posts
    Predefinito

    edit:
    ci sono riuscito
    usando "onPrepareOptionsMenu(Menu menu)"

    mi resta un dubbio perchè leggo su un sito:
    On Android 2.3.x and lower, the system calls onPrepareOptionsMenu() each time the user opens the options menu (presses the Menu button).
    On Android 3.0 and higher, we need to call invalidateOptionsMenu() to request that the system call onPrepareOptionsMenu().

    cosa significa? devo chiamare invalidateOptionsMenu() nel "onOptionsItemSelected"?

    devo inserire:
    codice:
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        invalidateOptionsMenu(); 
    }
    dopo che è stato selezionato il menù?
    Ultima modifica di NewBlackMamba; 11-09-15 alle 14:16

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy