尝试获取字符串长度时Android应用程序崩溃

时间:2012-04-04 19:41:54

标签: java android string

那些发明Android和Java的人并不是为自己发明的。自从我开始在Android中使用Java开发应用程序后,我得到了最荒谬的错误,而且我真的很疯狂(如果我这样做,Google和Sun Microsystems将会制作“booooom”)

我有这个简单的代码,它应该获得作为参数传递的字符串的长度。应用程序崩溃了,让我花了几分钟咒骂和折磨键盘。

我的代码:

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

如果我删除了它的工作条件(文本“Ready”显示在我的TextView上)。这很奇怪,我知道我可能会遗漏一些东西。

给我一​​些线索并感谢一切!

P.S。如果您听到来自邻居的枪支射击可能是我。

4 个答案:

答案 0 :(得分:4)

因为你的字符串可能是 null 。这样做:

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

答案 1 :(得分:1)

试试这个:

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

答案 2 :(得分:0)

首先检查结果是否为空,正确处理,然后检查它的长度。我最好的猜测是你有一个未处理的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 / catch块中。

    @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.
    }
}

答案 3 :(得分:0)

正如Waqas所说,问题是因为你的字符串可能为空。如果字符串为null,则不定义方法长度。因此,添加一个检查空值的附加条件,即

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