我在下面使用此代码,禁用我的按钮,直到第一个输入框收到一些数字。 问题是当我在第二次输入接收号码之前按下按钮,然后应用程序崩溃。
第一个输入var是firstEdittext
,第二个是secondEditText
firstEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Btn.setEnabled(!(firstEditText.getText().toString().trim().isEmpty());
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
是否可以将这个TextWatcher用于两者? 或者我需要使用另一种方法来禁用我的按钮
答案 0 :(得分:1)
尝试解析secondEditText
中的空文本会导致错误。在这种情况下,您需要将TextWatcher
设置为EditText
s。
您可以通过在类中定义命名的TextWatcher
来设置,然后将EditText
设置为使用它。您还需要修复检查条件以启用按钮。
内部onCreate()
:
TextWatcher tw = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Btn.setEnabled(!TextUtils.isEmpty(firstEditText.getText()) && !TextUtils.isEmpty(secondEditText.getText()));
}
@Override
public void afterTextChanged(Editable s) {
}
};
firstEditText.addTextChangedListener(tw);
secondEditText.addTextChangedListener(tw);