我已经阅读了很多关于这个主题的问题,我读过的所有内容似乎表明我做的是正确的,但问题仍然存在(令人沮丧)。我有一个用户输入编辑文本值,用于倒数计时器,我知道需要一个长(原始)变量。所以我使用Long.pasreLong(Stringvarible)获得了很长时间。这不起作用。我添加了一个try catch,它似乎表明解析存在问题,但我无法弄清楚问题。请参阅以下代码部分:
editText_Time.setOnEditorActionListener(new OnEditorActionListener(){
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_DONE||
actionId == EditorInfo.IME_ACTION_SEARCH ||
event.getAction() == KeyEvent.ACTION_DOWN &&
event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
startTime_String = editText_Time.getText().toString();
//Something's wrong with the parse long portion
startTime_Long = Long.parseLong(startTime_String);
// try {
// startTime_Long = Long.parseLong(startTime_String);
// } catch (NumberFormatException e) {
// System.out.println("NumberFormatException: " + e.getMessage());
// }
startTime = startTime_Long;
countDownTimer = new MyCountDownTimer(startTime, interval);
return false;
}
return handled;
}
});
答案 0 :(得分:0)
如果getText()
返回空CharSequence
,您将获得NumberFormatException
。
为了避免它,您可以执行以下操作
startTime_String = editText_Time.getText().toString().trim();
if (startTime_String.length() == 0) {
startTime_Long = 0;
} else {
startTime_Long = Long.parseLong(startTime_String);
}
当然,EditText应该是数字
android:inputType="number"