Android Studio - 如何让.addTextChangedListener使用两个EditText

时间:2017-03-09 16:27:53

标签: android android-studio

目前我的目标是默认禁用按钮,然后在EditTexts input1和input2中存储任何值时重新启用

    input1= (EditText) findViewById(R.id.input1); 
    input2= (EditText) findViewById(R.id.input2);

    go1= (Button) findViewById(R.id.Go1);

    go1.setEnabled(false); //Default turning off my button

    input1.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (s.toString().equals("")) {
                go1.setEnabled(false);
            } else {
                go1.setEnabled(true);
            }
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

上面的工作是当input1有任何值时启用按钮go1,但是我不确定如何使用它以便仅当两个输入1和输入2都有值时启用按钮。

创建第二个侦听器只会向后工作,因为会覆盖另一个。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

同时验证EditText的值。

input1= (EditText) findViewById(R.id.input1); 
input2= (EditText) findViewById(R.id.input2);
go1= (Button) findViewById(R.id.Go1);

go1.setEnabled(false); //Default turning off my button


TextWatcher watcher = new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        go1.setEnable(!TextUtils.isEmpty(input1.getText()) 
                 && !TextUtils.isEmpty(input2.getText()));
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { }

    @Override
    public void afterTextChanged(Editable s) { }
}

input1.addTextChangedListener(watcher);
input2.addTextChangedListener(watcher);

答案 1 :(得分:0)

这可以使用if语句完成。

input1= (EditText) findViewById(R.id.input1); 
input2= (EditText) findViewById(R.id.input2);
go1= (Button) findViewById(R.id.Go1);

go1.setEnabled(false); //Default turning off my button

input1.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        if (s.toString().equals("")) {
            go1.setEnabled(false);
        } else {
            if(!input2.getText().toString.equals("")) //reference line **1**
               go1.setEnabled(true);
        }
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void afterTextChanged(Editable s) {

    }
});

同样的TextWatcher也可以添加到input2,但您需要编辑从input2到{{1}的代码中的参考行1 }。这是有效的,因为当input1input1文本的值发生更改时,它会检查两个输入是否为空。