Android字符串比较

时间:2013-12-18 20:19:03

标签: java android

我想在用户点击按钮时比较两个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)

任何帮助都会很棒,谢谢

4 个答案:

答案 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){

如果你改变了,你应该没有问题...哦,我不建议忽略密码检查的情况。