仅当 Android 中两个文本视图都非空时才启用按钮

Enable button only if both textview are non-empty in Android

我正在用两个 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()) );
        }
    });

您没有第二个侦听器 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()) );
        }
    });

下面这段代码只是注册用户名文本字段,您需要为 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 指定侦听器。提供一个给它

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()) );
    }
});