当EditText为空时,Android崩溃用于动态计算

时间:2012-02-22 13:22:30

标签: android dynamic crash android-edittext

我正在研究磁盘空间计算器,我需要根据用户输入动态计算一些值。我的应用程序中有一个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");

但它不起作用。我该如何解决这个问题?

4 个答案:

答案 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

中进行操作