2014-04-19 9 views
5

in Android quando mi definiscono gestore onclick di un MenuItem in XMLAndroid valore menuitem onclick del conduttore di ritorno

<item 
    android:id="@+id/context_menu" 
    android:orderInCategory="100" 
    android:showAsAction="never" 
    android:title="@string/word_context_menu_title" 
    android:onClick="deleteItem"/> 

E nel corrispondente attività ho definire una funzione DeleteItem con il seguito della firma.

public boolean deleteItem(MenuItem item){ 
    logger.info("delete button clicked"); 
    return false; 
} 

La mia domanda è: cosa significa il valore restituito? In tal caso dovrei restituire true e in tal caso dovrei restituire false?

risposta

4

Cosa si intende il valore di ritorno boolean dalla documentazione di onMenuItemClick:

Ritorna fedele a consumare questo clic e impedire ad altri di esecuzione.

Comportamento simile a onOptionsItemSelected con la risposta here. Se ho capito bene, questo significa che ogni volta che hai gestito con successo l'evento, devi restituire true.


Ecco un esempio.

Supponiamo che tu abbia il tuo deleteItem e anche onOptionsItemSelected.

public boolean deleteItem(MenuItem item){ 
    Log.v("test", "delete button clicked"); 
    return false; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) 
    { 
     case R.id.context_menu: 
      Log.v("test","onOptionsItemSelected"); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

Se si torna false in deleteItem si vedrà che è anche gestita in onOptionsItemSelected.

> tasto delete cliccato
> onOptionsItemSelected

Se si torna true in deleteItem non sarà più essere gestita in onOptionsItemSelected.

> Elimina pulsante cliccato

Si noti inoltre che il manico deleteItem può essere un metodo void e sarà automaticamente tornare vero come per il codice sorgente here.

+0

Grazie per aver indicato il codice. –