我正在制作一个计时器应用程序,我有一个EditText用于输入数字,并基于我所选择的单选按钮,乘以输入等于CountDownTimer类的长毫秒未来。但显然有一些错误解析我的EditText作为一个长。下面是RadioGroup的部分:
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == rdSeconds.getId()) {
et_num.setHint("Seconds");
String value = et_num.getText().toString();
//selectedOption is a long variable
selectedOption = Long.parseLong(value) * 1000;
} else {
et_num.setHint("Minutes");
String value = et_num.getText().toString();
selectedOption = Long.parseLong(value) * 60000; //line 102
}
}
});
这是它给我的错误的一部分?
java.lang.NumberFormatException: For input string: ""
at java.lang.Long.parseLong(Long.java:455)
at java.lang.Long.parseLong(Long.java:485)
at com.example.timemachine.MainActivity$2.onCheckedChanged(MainActivity.java:102)
在解析之前检查你的editText是否有合适的值
String value = et_num.getText().toString();
if(value != null && !value.isEmpty())
{
selectedOption = Long.parseLong(value) * 1000;
}
错误非常明显,您将空字符串解析为类型Number。有一些方法可以处理这个
-
你可以检查你的编辑文本的值为@sasikumar的答案,如:
if (!yourEditText.getText().toString().equals("")) { /* Then parse your value from Edit Text to Number */ }
-
你可以使用NumberFormatException:
try { /* Then parse your value from Edit Text to Number */ } catch(NumberFormatException e) { /* Any error about formating will catch here */ }