Dav*_*vid 6 android android-edittext
我有九个 EditText 字段,我正在使用 TextWatcher,我希望能够工作的是,如果所有九个 EditText 字段都已填充,则启用按钮(如果未禁用),
我在 OnCreate 中禁用了按钮,所以当程序第一次运行时,按钮被禁用,但是一旦我在一个编辑文本字段中输入一个数字,按钮就会启用,即使其他八个字段为空,也是一旦我从中删除所有文本按钮仍处于启用状态的所有字段。
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);
}
}
};
Run Code Online (Sandbox Code Playgroud)
“你的逻辑有问题”
由于您希望在任何一个字段EditText为空时禁用该按钮,因此您应该使用 OR ( ||) 而不是 AND ( &&) 检查它们。如果使用 AND,则仅当所有s同时为EditText空时该按钮才会被禁用。
您的代码中还存在一个错误:T5.toString().trim().length()。
T5.toString()是 的文本表示EditText,并且永远不应该为空,这与 AND 的使用相结合将导致条件永远不会为真。