无法验证AlertDialog的setPositiveButton下的EditText

时间:2019-02-01 13:15:04

标签: java android alertdialog

我有一个AlertDialog,需要为用户执行特定动作的密码。但是,当我尝试将密码与字符串进行比较以验证密码是否正确时,代码不会执行任何操作,也不会显示任何错误。当我尝试比较字符串的长度,代码完美的作品,并在执行该条件的代码,它也提示用户,如果EditText是空的。

我想要代码做的是:if (password == "password" || "otherpassword"){ execute code }

这是我的方法,它可以通过测量密码的长度来工作:

public void redeem(View view) {

        final EditText taskEditText = new EditText(this);
        AlertDialog dialog = new AlertDialog.Builder(this)
                .setTitle("Password")
                .setView(taskEditText)
                .setPositiveButton("Redeem", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int id) {

                        String password = taskEditText.getText().toString();

                        if (password.length() == 4) {

                            // Execute piece of code

                        } else if (password.isEmpty() == true) {
                            Toast.makeText(PostDetailActivity.this, "The password cannot be empty", Toast.LENGTH_LONG).show();
                        }
                    }
                })
                .setNegativeButton("Cancel", null)
                .create();
        dialog.show();
}

1 个答案:

答案 0 :(得分:0)

您可以使用password.equals("password")

您的情况应该是:

if(password.equals("password") || password.equals("someOtherPassword")){ }

此外,为了避免/确保区分大小写的结果,可以将boolean参数传递给equals()函数。像"password".equals("PASSWORD",true)那么它将返回false password!=PASSWORD。同样,您可以使用"password".equals("PASSWORD",false),在这种情况下可以使用password==PASSWORD [忽略大写字母或小写字母。]

另外,在else if分支,就没有必要做else if(password.isEmpty() == true)else if(password.isEmpty())本身并做任务。