我想在用户点击按钮时比较两个EditTexts。但是,即使两个字符串不同,IF语句也会返回true。
final EditText email= (EditText)findViewById(R.id.txtEmail);
final EditText emailconf= (EditText)findViewById(R.id.txtEmailConf);
final EditText password = (EditText)findViewById(R.id.txtPassword1);
final EditText passconf = (EditText)findViewById(R.id.txtPasswordConf);
final String emailInput = email.getText().toString();
final String emailconfInput = emailconf.getText().toString();
final String passinput = password.getText().toString();
final String passconfinput = passconf.getText().toString();
//When our register button is pressed
btnRegister.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(emailInput.equalsIgnoreCase(emailconfInput)){
if(passinput.equalsIgnoreCase(passconfinput)){
new RegisterTask().execute();
}
else{
displayDialogue("Error", "Your password's do not match, please try again", "Re-input details");
}
}else{
displayDialogue("Error", "Your email's do not match, please try again", "Re-input details");
}
}
});
如果两者都正确则会运行Asynctask(RegisterTask)
任何帮助都会很棒,谢谢
答案 0 :(得分:2)
final String passinput = password.getText().toString();
final String passconfinput = passconf.getText().toString();
将此部分移至onClick()
,以便仅在EditText
s中提取文本。在onCreate()
中,它们都是空的,两个空字符串将匹配。
答案 1 :(得分:0)
你确定它在每种情况下都是真的吗?除了equals方法,尝试compareTo方法它将正常工作
答案 2 :(得分:0)
我建议你清理这两个字段,因为如果用户在字段的开头或结尾放置一个空格,equalsIgnoreCase
将返回false。
尝试trim()
等方法,删除无效字符,然后进行比较,这取决于您要检查的内容。
答案 3 :(得分:-5)
if(emailInput == emailconfInput){
如果你改变了,你应该没有问题...哦,我不建议忽略密码检查的情况。