2014-04-19 5 views
5

In android Onclick-Handler, wenn ich definiere einen Onclick-Handler menuitem in xmlAndroid menuitem Rückgabewert

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

Und in der entsprechenden Aktivität ich eine Funktion deleteItem mit der unten Signatur definieren.

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

Meine Frage ist was bedeutet der Rückgabewert? In welchem ​​Fall sollte ich wahr zurückgeben und in welchem ​​Fall sollte ich falsch zurückgeben?

Antwort

4

Was der boolean Rückgabewert bedeutet, aus der Dokumentation von onMenuItemClick:

return true diesen Klick zu konsumieren und verhindern, dass andere Ausführung.

So ähnliches Verhalten zu onOptionsItemSelected mit der Antwort here. Wenn ich es richtig verstehe, bedeutet dies, dass Sie, wenn Sie das Ereignis erfolgreich behandelt haben, true zurückgeben sollten.


Hier ist ein Beispiel.

Sagen Sie, Sie haben Ihre deleteItem und auch 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); 
    } 
} 

Wenn Sie false in deleteItem zurückkehren, werden Sie sehen, dass es auch in onOptionsItemSelected gehandhabt wird.

> Löschen-Taste angeklickt
> onOptionsItemSelected

Wenn Sie true in deleteItem zurückkehren wird es nicht mehr in onOptionsItemSelected behandelt werden.

> Löschen-Taste

geklickt

Beachten Sie auch, dass Ihr deleteItem Griff eine void Methode sein kann, und es wird nach dem Quellcode here automatisch true zurück.

+0

Danke für den Hinweis auf den Code. –