一旦所有 EditText 字段都不为空,则启用按钮

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)

Jav*_*ave 3

“你的逻辑有问题”

由于您希望在任何一个字段EditText为空时禁用该按钮,因此您应该使用 OR ( ||) 而不是 AND ( &&) 检查它们。如果使用 AND,则仅当所有s同时为EditText空时该按钮才会被禁用。

您的代码中还存在一个错误:T5.toString().trim().length()
T5.toString()是 的文本表示EditText,并且永远不应该为空,这与 AND 的使用相结合将导致条件永远不会为真。