2012-04-04 14 views
-4

Diejenigen, die Android und Java erfunden haben, nicht für sich selbst erfunden. Seit ich Anwendungen mit Java in Android entwickle, bekomme ich die lächerlichsten Fehler und ich werde wirklich verrückt (und wenn ich das tue, machen Google und Sun Microsystems "booooom")Android-Anwendung stürzt ab, wenn versucht wird, Zeichenfolge Länge

Ich habe diesen einfachen Code, der soll Die Länge einer Zeichenfolge als Argument übergeben. Die Anwendung stürzt einfach ab und lässt mich einige Minuten lang die Tastatur fluchen und foltern.

Mein Code:

@Override 
protected void onPostExecute(String result) { 
    if (result.length() == 0) { 
     txtStatus.setText("Ready"); 
    } 
} 

Wenn ich den Zustand funktioniert es entfernen (der Text "Ready" auf meinem Textview gezeigt). Das ist etwas seltsam und ich weiß, dass ich etwas kleines verpassen könnte.

Gib mir ein paar Hinweise und danke für alles!

P.S. Wenn du ein Gewehr schießen hörst, das von deinem Nachbarn kommt, könnte ich es sein.

+0

Sparen Sie sich eine Menge Stress und mehr über die logcat Dienstprogramm - erhältlich über Eclipse oder über die Befehlszeile. Wenn etwas abstürzt, enthält die Logcat-Ausgabe einen Stack-Trace, der nützliche Hinweise wie eine Nullzeiger-Ausnahme enthält. Im schlimmsten Fall kopiere die Ausnahmebotschaft in eine Google-Suche, um andere zu finden, die das gleiche Problem gesehen haben und von der Weisheit anderer profitieren, die das Problem bereits gelöst haben. – Colin

Antwort

4

Es ist, weil Ihre Zeichenfolge ist vielleicht null. Machen Sie es wie folgt aus:

@Override 
protected void onPostExecute(String result) { 
    if (!TextUtils.isEmpty(result)) { 
     txtStatus.setText("Ready"); 
    } 
} 
+0

Ja! Ich habe das Ergebnis als null initialisiert, aber ich dachte, dass es eine leere Zeichenfolge werden würde, nachdem ein leerer Inhalt von einer Webseite abgerufen wurde. Wie auch immer, deine Antwort war meine Lösung. Vielen Dank! – ali

1

Try this:

@Override 
protected void onPostExecute(String result) { 
    if (result != null && result.length() == 0) { 
     txtStatus.setText("Ready"); 
    } 
} 
0

Überprüfen Sie, ob Ergebnis null erste ist, Handle es angemessen, dann überprüfen Sie es Länge ist. Meine beste Vermutung ist, dass Sie eine unbehandelte NullPointerException haben.

@Override 
protected void onPostExecute(String result) { 
    if (result == null) { 
     result = ""; // change this line if null is an error. 
    } 
    if (result.length() == 0) { 
     txtStatus.setText("Ready"); 
    } 
} 

Eine Debug-Technik, um herauszufinden, was falsch ist und Ihren Programmabsturz zu machen wäre, den Zustand in einem try/catch-Block zu wickeln.

0

Wie von Waqas gesagt, ist das Problem, weil Ihre Zeichenfolge möglicherweise null ist. Wenn die Zeichenfolge null die Methode Länge nicht defined.So eine zusätzliche Bedingung für null d.h Überprüfung hinzufügen

if(result ==NULL) 
// do something else 
else 
//your code here 
Verwandte Themen