答案 0 :(得分:3)
在这一行:
if(isFreeVersion && Integer.valueOf(inputMinutes.getText().toString()) > 120)
我会先检查inputMinutes.getText().toString() != ""
。
Integer.valueOf("")
会抛出错误。
答案 1 :(得分:3)
嗯,我猜这是由于空指针异常或由于解析引起的异常引起的,因为您试图将edittext字段中的字符串转换为数字。因此,当用户清除文本字段时,代码会尝试将空值或空字符串更改为不可能的数字。
我不是说这是正确的答案,但这是我看到你的代码后的想法。
您可以以编程方式检查textfield是否为null,然后在textfield设置为null / empty string时写入相应的逻辑。
@Override
public void afterTextChanged(Editable s)
{
if (inputMinutes.getText != null && !inputMinutes.getText.equals("")) {
// TODO Auto-generated method stub
if(isFreeVersion && Integer.valueOf(inputMinutes.getText().toString()) > 120)
showToast("The free version is limited to 120 minutes.");
else
{
editor.putLong("neglectedPeriodMsecs", Long.parseLong(s.toString())*60000);
editor.commit();
}
}
}
如果它是一个nullpointer异常,那么你可以使用try catch块捕获它。
如果这些不正确,那么如果您从logcat发布堆栈跟踪会显示错误日志,以便其他人可以看到导致此错误的内容,将会有所帮助。