2011-06-03 53 views
0

在此先感谢您的答案。我正在研究一个基本税计算器,以帮助我更好地理解Android SDK的基本原理。用户输入小计和税率(.08),然后按计算以计算解决方案。我禁用计算按钮,直到两个字段都有内容。我的问题是,当用户输入两个字段的数字时,计算按钮仍然被禁用。我发布了我当前正在运行的代码(OnKeyListener)。 edittext字段被注册到侦听器。启用按钮的OnKeyListener问题

private OnKeyListener mKeyListener = new OnKeyListener() 
{ 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) 
    { 
     switch(v.getId()) 
     { 
     case R.id.txtSub: 
      cmdSubmit.setEnabled(txtTax.getText().length()>0 
        && txtSub.getText().length() > 0); 
      break; 
     case R.id.txtTax: 
      cmdSubmit.setEnabled(txtTax.getText().length()>0 
        && txtSub.getText().length() > 0); 
      break; 
     } 
     return false; 
    } 

}; 

回答

0

如果你看一下spec为OnKeyListener你会发现,它被调用之前该KeyEvent是考虑到视图。除此之外,这看起来是正确的:我会怀疑你没有把听众绑定到正确的视角。在该方法中放置一个断点并确保它正确调用。

0

我个人发现TextWatcher关于防范的EditText有数据还是没有轨道的好得多的办法:

TextWatcher tw = new TextWatcher() { 
    @Override 
    public void afterTextChanged(Editable s) { 
    cmdSubmit.setEnabled(!Utils.isStringBlank(txtTax.getText().toString()) && 
         !Utils.isStringBlank(txtSub.getText().toString())); 
    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 
    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) {} 
}; 
txtTax.addTextChangedListener(tw); 
txtSub.addTextChangedListener(tw);