2016-03-24 6 views
-1

Hier ist mein Code:Die toString-Methode von MenuItem gibt einen leeren String zurück, warum?

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     super.onCreateOptionsMenu(menu, inflater); 
     inflater.inflate(R.menu.tracking_menu, menu); 

     myLocationMenuItem = menu.getItem(0); 

     if (myLocationMenuItem == null) { 
      Log.i("MenuItemLogging", "instance is: null"); 
     } else { 
      Log.i("MenuItemLogging", "instance is not null: " + myLocationMenuItem.toString()); 
     } 
    } 

Hier das Protokoll:

03-24 10: 19: 06,215: I/MenuItemLogging (8519): Beispiel ist nicht null:

Und dort sind keine Zeichenfolge für den Rückgabewert der myLocationMenuItem.toString().

Die MenuItem Klasse haben das gleiche toString als Objekt:

public String toString() { 
     return getClass().getName() + '@' + Integer.toHexString(hashCode()); 
    } 

Aber es gibt leeren String.

Wie ist das möglich?

+0

ist es nur Neugier auf die toString? – Blackbelt

+0

Es ist "nicht zu verstehen" über die toString, Wie könnte es leere String zurückgeben? –

+1

Sie suchen wahrscheinlich nach der falschen Klasse. Wo haben Sie diese Implementierung gefunden? – Blackbelt

Antwort

1

MenuItem eine Schnittstelle ist. Wenn Sie versuchen, die Implementierung von myLocationMenuItem.toString() zu erhalten, erhalten Sie die toString() - Implementierung von Object. Was Sie wollen, ist die Implementierung von toString() einer Klasse, die MenuItem (MenuItemImpl) implementiert, das ist

@Override 
public String toString() { 
    return mTitle != null ? mTitle.toString() : null; 
}