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