仅当Android中的两个textview都为非空时才启用按钮

时间:2015-01-22 05:16:03

标签: android textview

我正在使用两个TextView和一个Button进行登录。默认情况下,禁用登录按钮(btnSignin)。仅当两个TextView都非空时才应启用该按钮。 我尝试了这个代码,它正在部分工作。但Button只对第一个textView(txtId)做出反应。如果第二个textView在第一个之后被更改,则不会发生任何事情。

为方便起见,我在这里删除了两个@override函数。

    usernameTxt = (EditText) findViewById(R.id.txtId);
    passwordTxt = (EditText) findViewById(R.id.txtPassword);
    final Button signinBtn = (Button) findViewById(R.id.btnSignin);

    usernameTxt.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            signinBtn.setEnabled( (!usernameTxt.getText().toString().trim().isEmpty()) & (!passwordTxt.getText().toString().trim().isEmpty()) );
        }
    });

3 个答案:

答案 0 :(得分:4)

usernameTxt = (EditText) findViewById(R.id.txtId);
passwordTxt = (EditText) findViewById(R.id.txtPassword);
final Button signinBtn = (Button) findViewById(R.id.btnSignin);

usernameTxt.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        signinBtn.setEnabled( (!usernameTxt.getText().toString().trim().isEmpty()) && (!passwordTxt.getText().toString().trim().isEmpty()) );
    }
});

也适用于

passwordTxt.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        signinBtn.setEnabled( (!usernameTxt.getText().toString().trim().isEmpty()) && (!passwordTxt.getText().toString().trim().isEmpty()) );
    }
});

答案 1 :(得分:1)

以下代码只注册userName文本字段,您需要为 passwordTxt

添加类似的内容
usernameTxt.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            signinBtn.setEnabled( (!usernameTxt.getText().toString().trim().isEmpty()) & (!passwordTxt.getText().toString().trim().isEmpty()) );
        }
    });

那就是你要为 usernameTxt 指定听众,而不是为 passwordTxt 指定听众。只提供一个

答案 2 :(得分:0)

你没有第二个textview的听众。为passwordTxt

添加一个监听器
passwordTxt.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            signinBtn.setEnabled( (!usernameTxt.getText().toString().trim().isEmpty()) & (!passwordTxt.getText().toString().trim().isEmpty()) );
        }
    });