#

Android Studio: Java Return Code im Android Debugger beendet nicht die Methode
 
Problem: eine Return-Anweisung in Android Java scheint nicht eine Methode zu beenden in der Rücksprüngadresse.
Frage: Beendet eine Return-Anweisung in Android Studio Java direkt die Methode und gibt den Return-Wert direkt zurück?
 
Beschreibung:
Beim Debuggen eines Sample Codes unter Android Studio ist mir aufgefallen, dass im Debugger-Modus der Rücksprung einer Methode durch die return value;  Anweisung nicht direkt die Methode beendet und dadurch den Return-Wert in die aufrufende Anweisung zurück gibt.
 
Youtube

 
 
In meinem Test Code habe ich auf die Rückgabe eines Wertes in einer Java For-Schleife gewartet, die mit einer If(..) {return 1} Anweisung einen Treffer zurückgeben sollte.

 

//---< find Index of string-value in Array >---
//*find index position of an element in an array. @by the value
public int find_Index(String[] array, String sSearch) {
Log.d(
"rp find_index():"," sSearch=" + sSearch);
for(int i=0; i<array.length; i++) {
String sRow=array[i];
boolean bMatch=sRow.equals(sSearch);
//Toast.makeText(this ,"sRow=" + sRow + " " + bMatch + " sSearch=" + sSearch,Toast.LENGTH_SHORT).show();
//if (sRow.equals(sSearch)==true)
if(bMatch==true) {
Toast.makeText(
this ,"Match before inner return",Toast.LENGTH_SHORT).show();
Log.d(
"rp:","match sRow=" + sRow + " sSearch=" + sSearch);
return i;
}
}
Log.d(
"rp","outer loop sSearch=" + sSearch);
Toast.makeText(
this ,"after inner return",Toast.LENGTH_SHORT).show();
return 0;
}
//---</ find Index of string-value in Array >---
 

 
Allerdings springt in der Anzeige des Android Studio Debuggers der Code-Breakpoint nicht direkt aus der Methode,
sondern er springt erst verwirrend zu einem äußeren finalen return Code.
Dadurch entsteht der Eintruck, dass der falsche Return Rückgabe-Wert zurückgegeben werden würde.
 

 
Da man in Android Studio nicht direkt einen Breakpoint auf eine return-Zeile setzen kann, muss mal deshalb beim Untesuchen des Java Codes eine zwischenzeile einarbeiten.
Zum beispiel eine Log Anweisung zum Debug-Loggen von Code-Werten oder eine Toast Anweisung zum Anzeigen eines Display-Meldung auf der App.
 
Beim Durchlaufen der Java-Zeilen mit dem Log.d(..) Anweisung, die zu den entsprechenden Zeilen einen Kontrollwert ausgibt, zeigt sich schon, dass der richtige Wert zurückgegeben wird.
Allerdings ist wie gesagt der Rücksprung zu äusseren Schlaufe verwirrend.
 
Log.d Ausgabe in Android Studio Monitor

09-27 12:38:53.383 7446-7446/de.rue25.schule_vertretungsplan D/rp:: match sRow=72622 Nuertingen, MPG sSearch=72622 Nuertingen, MPG
 
09-27 12:39:20.875 7446-7446/de.rue25.schule_vertretungsplan D/rpfind_index():: sSearch=72622 Nuertingen, Hoegy
09-27 12:39:38.210 7446-7446/de.rue25.schule_vertretungsplan D/rp:: match sRow=72622 Nuertingen, Hoegy sSearch=72622 Nuertingen, Hoegy
 

 

 
Mobile

.

soap2day