Android: come abilitare / disabilitare l'opzione del menu di opzione sul clic del button?

Posso facilmente farlo quando sto utilizzando methods onCreateOptionsMenu o onOptionsItemSelected .

Ma ho un button da qualche parte nello schermo e, facendo clic su quel button, dovrei abilitare / disabilitare le voci del menu di scelta rapida.

  • Sovrascrivere il file res / values ​​/ strings.xml con /strings.xml scaricare la scheda SD dal server android
  • android come un EditText funziona come completamento automatico
  • TypeArray in Android - Come memorizzare gli oggetti personalizzati in xml e recuperarli?
  • Come analizzare solo alcuni arrays Json selezionati e Oggetti Json da un URL a dispositivo Android
  • Codice Gradle non costruito: manca l'aidl
  • Dagger and Butter Knife vs. Annotazioni Android
  • Grazie…

  • Android Google Api per SpreadSheet
  • Disposizione diversa di griglia per il ritratto e il paesaggio in bootstrap
  • Impostazione di Ormlite senza utilizzare le attività di base
  • Come get l'utilizzo della memory corrente in android?
  • Quale tipo di sforzi di conversione sono coinvolti nel trasferire un'applicazione completa di droidi per lavorare su Blackberry?
  • Aggiorna stato della casella di controllo in una list di visualizzazione
  • 6 Solutions collect form web for “Android: come abilitare / disabilitare l'opzione del menu di opzione sul clic del button?”

    Comunque, la documentazione copre tutte le cose.

    Modificare le voci di menu in fase di runtime

    Una volta creata l'attività, il metodo onCreateOptionsMenu() viene chiamato solo una volta, come descritto in precedenza. Il sistema mantiene e utilizza nuovamente il Menu definito in questo metodo finché l'attività non viene distrutta. Se si desidera modificare il Menu Opzioni in qualsiasi momento dopo la sua creazione, è necessario ignorare il metodo onPrepareOptionsMenu() . Questo ti passa l'object Menu come esiste attualmente. Ciò è utile se desideri rimuovere, aggiungere, distriggersre o abilitare le voci di menu a seconda dello stato attuale dell'applicazione.

    Per esempio

     @Override public boolean onPrepareOptionsMenu (Menu menu) { if (isFinalized) { menu.getItem(1).setEnabled(false); // You can also use something like: // menu.findItem(R.id.example_foobar).setEnabled(false); } return true; } 

    Su Android 3.0 e versioni successive, il menu delle opzioni è considerato sempre aperto quando le voci di menu vengono presentate nella barra degli strumenti. Quando si verifica un evento e si desidera eseguire un aggiornamento del menu, è necessario call invalidateOptionsMenu() per richiedere la chiamata di sistema onPrepareOptionsMenu() .

    Su tutte le versioni Android, il modo più semplice: usa questo per mostrare un'icona di azione del menu come distriggersta e rendere FUNCTION come disabilitata:

     @Override public boolean onPrepareOptionsMenu(Menu menu) { MenuItem item = menu.findItem(R.id.menu_my_item); if (myItemShouldBeEnabled) { item.setEnabled(true); item.getIcon().setAlpha(255); } else { // disabled item.setEnabled(false); item.getIcon().setAlpha(130); } } 

    È ansible salvare l'elemento come una variabile quando si crea il menu delle opzioni e quindi modifica le properties; a piacimento.

     private MenuItem securedConnection; private MenuItem insecuredConnection; @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.connect_menu, menu); securedConnection = menu.getItem(0); insecuredConnection = menu.getItem(1); return true; } public void foo(){ securedConnection.setEnabled(true); } 

    semplificare la versione @Vikas

     @Override public boolean onPrepareOptionsMenu (Menu menu) { menu.findItem(R.id.example_foobar).setEnabled(isFinalized); return true; } 

    la soluzione migliore quando si esegue sul cassetto di navigazione

     @Override public boolean onPrepareOptionsMenu(Menu menu) { menu.setGroupVisible(0,false); return true; } 

    Generalmente è ansible modificare le properties; delle tue viste in runtime:

     (Button) item = (Button) findViewById(R.id.idBut); 

    e poi…

     item.setVisibility(false) 

    ma

    se si desidera modificare la visibilità delle opzioni dal ContextMenu, premere il button, è ansible triggersre una bandiera, quindi in onCreateContextMenu è ansible eseguire le seguenti operazioni:

      @Override public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.setHeaderTitle(R.string.context_title); if (flagIsOn()) { addMenuItem(menu, "Option available", true); } else { Toast.makeText(this, "Option not available", 500).show(); } } 

    Spero che aiuti

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.