Невозможно проверить EditText под setPositiveButton AlertDialog - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть 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 голосов
/ 01 февраля 2019

Вы можете использовать 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()) один выполнит задачу.

...