编辑文本到长变量问题?



我正在制作一个计时器应用程序,我有一个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。有一些方法可以处理这个

  1. 你可以检查你的编辑文本的值为@sasikumar的答案,如:

    if (!yourEditText.getText().toString().equals("")) {
    /* Then parse your value from Edit Text to Number */
    }
    
  2. 你可以使用NumberFormatException:

    try {
    /* Then parse your value from Edit Text to Number */
    } catch(NumberFormatException e) {
    /* Any error about formating will catch here */
    }
    

最新更新