所有EditText字段均为空时启用按钮

时间:2014-10-04 20:15:19

标签: 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);
        }
    }
};

2 个答案:

答案 0 :(得分:2)

“你的逻辑是有缺陷的”

由于您要在EditText - 字段中的任何一个为空时禁用该按钮,您应该使用OR(||)而不是AND(&&)进行检查。如果您使用AND,则仅当所有 EditText同时 时才会禁用该按钮。

您的代码中也有错误:T5.toString().trim().length() T5.toString()EditText的文本表示,永远不应为空,这与AND的使用相结合将导致条件永远不会成立。

答案 1 :(得分:0)

这是正常的,看看你的情况。

如果我至少 ONE 字段不为空,我会进入else条件并启用按钮。

如果您想让所有字段都不为空,请恢复您的条件过程:

if(one of all field is empty) {
   button remains enable false
} else {
  button comes enable
}