提前感谢您的回答。我正在研究基本的税收计算器,以帮助我更好地理解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;
}
};
答案 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);