我正在研究磁盘空间计算器,我需要根据用户输入动态计算一些值。我的应用程序中有一个EditText元素,用于接收数字。我想调用我的函数calculate(),当用户在文本字段中输入值时,它会自动计算其他值。这是我的代码
//fps is my EditText element
this.fps.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
// TODO Auto-generated method stub
calculate();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
我的calculate()函数使用文本输入,将其转换为float并计算其他值,如带宽。它工作正常但问题来自我想删除EditText中的所有数字以添加另一个。在editText中没有任何内容的情况下,它会产生异常。据我所知,这是因为没有什么可以转换成浮点数所以解析异常等。 我尝试了一个默认值
if(fps.getText().length==0)
fps.setText("1");
但它不起作用。我该如何解决这个问题?
答案 0 :(得分:4)
尝试用try / catch块包围你的calculate()
并捕获抛出的异常..
try {
calculate();
} catch {NumberFormatException nfe) { //or whatever exception you get
//do some handling if you need to
}
答案 1 :(得分:1)
试试这个:
this.fps.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
if(!s.toString().trim().equals(""))
calculate();
else
//do nothing here or show error
}
});
答案 2 :(得分:1)
如果你的编辑文本中至少有一个字符,请尝试在onTextChanged()中调用你的计算器()。
if(fps.getText.length>0){
calculate();
}
答案 3 :(得分:0)
在afterTextChanged