2012-04-04 2 views
-4

Те, кто изобрел Android и Java, не придумали для себя. Поскольку я начал разрабатывать приложение с Java на Android, я получаю самые смешные ошибки, и я действительно схожу с ума (и если да, то Google и Sun Microsystems сделают «booooom»)При сбое приложения Android при попытке получить длину строки

У меня есть этот простой код, который должен получить длину строки, переданной в качестве аргумента. Приложение просто падает, заставляя меня тратить несколько минут на ругательство и мучение клавиатуры.

Мой код:

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

Если удалить условие он работает (текст "Ready" отображается на моем TextView). Это что-то странное, и я знаю, что мне может что-то недоставать.

Дайте мне подсказки и спасибо за все!

P.S. Если вы услышите выстрел из вашего соседа, это может быть я.

+0

Сохранить себя много стресса и узнать о LogCat утилиты - доступный через Eclipse, или из командной строки. Когда что-то выходит из строя, вывод logcat будет включать в себя трассировку стека, которая имеет полезные подсказки, такие как исключение нулевого указателя. В худшем случае скопируйте/вставьте сообщение об исключении в поиск Google, чтобы найти других, которые видели ту же проблему, и получить от мудрости других, которые уже решили проблему. – Colin

ответ

4

Его потому, что ваша строка, возможно, null. Как это так:

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

Да! Я инициировал результат как null, но я думал, что он станет пустой строкой после получения пустого содержимого с веб-страницы. Во всяком случае, ваш ответ был моим решением. Благодаря! – ali

1

Попробуйте это:

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

Проверьте, если результат нулевой первый, Handle его соответствующим образом, а затем проверить его длина. Мое лучшее предположение: у вас есть необработанное исключение NullPointerException.

@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"); 
    } 
} 

Методика отладки, чтобы выяснить, что случилось и что делает ваш сбой программы будет обернуть состояние в Try/поймать блок.

@Override 
protected void onPostExecute(String result) { 
    try { 
     if (result.length() == 0) { 
      txtStatus.setText("Ready"); 
     } 
    catch (Throwable t) { // both error and exception inherit from Throwable. 
     // print or inspect 't' here to determine the reason for the crash. 
    } 
} 
0

Как сказал Вакас, проблема в том, что ваша строка может быть нулевой. Если строка нулевой длины метод не defined.So добавить дополнительное условие проверки на нулевой т.е.

if(result ==NULL) 
// do something else 
else 
//your code here 
Смежные вопросы