我有九个 EditText 字段,我正在使用 TextWatcher,我希望开始工作的是,如果所有九个 EditText 字段都被填充,则启用按钮,如果不是禁用,
我在 OnCreate 中禁用了按钮,所以当程序第一次运行时按钮被禁用但是一旦我在一个编辑文本字段中输入一个数字按钮就会启用,即使其他八个字段为空,也一旦我删除all 来自所有字段的文本按钮仍处于启用状态。
EditText T1, T2, T3, T4, T5, T6, T7, T8, T9;
// Button buttonClear;
Button ButtonScore;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
T1 = (EditText) findViewById(R.id.editText2);
T2 = (EditText) findViewById(R.id.editText3);
T3 = (EditText) findViewById(R.id.editText4);
T4 = (EditText) findViewById(R.id.editText5);
T5 = (EditText) findViewById(R.id.editText6);
T6 = (EditText) findViewById(R.id.editText7);
T7 = (EditText) findViewById(R.id.editText8);
T8 = (EditText) findViewById(R.id.editText9);
T9 = (EditText) findViewById(R.id.editText10);
ButtonScore = (Button) findViewById(R.id.buttonScore);
ButtonScore.setEnabled(false);
T1.addTextChangedListener(watcher);
T2.addTextChangedListener(watcher);
T3.addTextChangedListener(watcher);
T4.addTextChangedListener(watcher);
T5.addTextChangedListener(watcher);
T6.addTextChangedListener(watcher);
T7.addTextChangedListener(watcher);
T8.addTextChangedListener(watcher);
T9.addTextChangedListener(watcher);
//updateButtonScore();
}
private final TextWatcher watcher = 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)
{}
@Override
public void afterTextChanged(Editable s) {
if (T1.getText().toString().length() == 0 && T2.getText().toString().length() == 0 &&
T3.getText().toString().length() == 0 && T4.getText().toString().length() == 0 &&
T5.toString().trim().length() == 0 && T6.getText().toString().length() == 0 &&
T7.getText().toString().length() == 0 && T8.getText().toString().length() == 0 &&
T9.getText().toString().length() == 0) {
ButtonScore.setEnabled(false);
} else {
ButtonScore.setEnabled(true);
}
}
};
最佳答案
“你的逻辑有问题”
如果 EditText
中的任何一个字段为空,您希望禁用该按钮,因此您应该使用 OR (||
) 而不是 AND (&&
)。如果您使用 AND,则只有当 所有 EditText
同时为空时,该按钮才会被禁用。
您的代码中也有错误:T5.toString().trim().length()
。
T5.toString()
是 EditText
的文本表示,绝不能为空,这与 AND 的使用相结合将导致条件永远不会为真。
关于android - 一旦所有 EditText 字段不为空,启用按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26196770/