Android会继续报告用户无法在手机上重现的崩溃事件。 我可以找到似乎不正确的行:
cursor.moveToFirst();
elechs=cursor.getString(2);
elecls=cursor.getString(3);
gass=cursor.getString(4);
waters=cursor.getString(5);
cursor.close();
if (elechs.length()!=0){
elechdb=Double.valueOf(elechs);
}
else {
elechdb=0.0;
}
if (elecls.length()!=0){
elecldb=Double.valueOf(elecls);}
else {
elecldb=0.0;
}
if (gass.length()!=0){
gasdb=Double.valueOf(gass);
}
else {
gasdb=0.0;
}
if (waters.length()!=0){
waterdb=Double.valueOf(waters);
}
else {
waterdb=0.0;
}
elecldb=Double.valueOf(elecls);
gasdb=Double.valueOf(gass);
waterdb=Double.valueOf(waters);
如果我查看代码,它没有任何意义。
我想我忘了删除最后三行。首先,我检查字符串。如果字符串为空,则将值存储为零。
如果单元格为空,则前三行不正确也会尝试生成double。这会引起很多崩溃。但不在我的机器上。
我认为不应该制作一个空单元格。
有谁知道为什么这个错误不会导致手机崩溃?
答案 0 :(得分:1)
您最好的解决方案可能只是删除那些不应该存在的有问题的行,最好在调用Double.valueOf()
时添加实际的错误处理,以防输入完全格式错误(如果单元格是空的,但如果它显示“hello world”,一切都会崩溃),并发布更新。
答案 1 :(得分:0)
由于用户正在获取NumberFormatException,因此应该捕获异常并在发生时执行适当的操作。
if (elechs.length()!=0) {
try {
elechdb=Double.valueOf(elechs);
} catch (NumberFormatException e) {
// Perform error handling
}
}
如果用户收到NullPointerException,您应该检查字符串是否为null,然后再检查它们的长度。
如果数据由用户输入,您应该执行上述两项操作以避免将来出现问题。