启用按钮的OnKeyListener问题

时间:2011-06-03 22:40:59

标签: android

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

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;
    }

};

2 个答案:

答案 0 :(得分:0)

如果查看OnKeyListener的spec,您会注意到在将KeyEvent赋予视图之前调用它。除此之外,这看起来是正确的:我怀疑你没有将听众绑定到正确的视图。在方法中加上一个断点,并确保它被正确调用。

答案 1 :(得分: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);