Диалог отклонить по кнопке да - PullRequest
0 голосов
/ 24 февраля 2019

Я использую класс, который выходит из диалога, чтобы изменить пароль.Когда я нажимаю кнопку «Да», диалог закрывается.Я хочу, чтобы диалоговое окно не закрывалось, если у меня неправильные данные.

Это мой код

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.btn_yes:
            if ((!TextUtils.isEmpty(newpass.getText().toString())) && oldpass.getText().toString().equals(Login_Activity.e.getPassword())) {
                Login_Activity.e.password=newpass.getText().toString();
                user.child(Login_Activity.e.getId()).setValue(Login_Activity.e);
                dismiss();
            } else {
                yes.setBackgroundResource(R.color.red);
            }
        case R.id.btn_no:
            dismiss();
            break;
    }
}

Спасибо за помощь

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Вам необходимо добавить оператор break для case R.id.btn_yes.В соответствии с docs :

операторы break необходимы, потому что без них операторы в блоках переключателей сбиваются: все операторы после совпадающей метки регистра выполняются последовательно, независимо отВыражение последующих меток регистра до тех пор, пока не встретится оператор break

В вашей ситуации нажимается кнопка с идентификатором btn_yes, затем выполняется либо блок кода в if, либо elseПоток программы продолжает выполнение кода в case R.id.btn_no, потому что он не был остановлен с разрывом в соответствующем случае.

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.btn_yes:
            if ((!TextUtils.isEmpty(newpass.getText().toString())) && oldpass.getText().toString().equals(Login_Activity.e.getPassword())) {
                Login_Activity.e.password=newpass.getText().toString();
                user.child(Login_Activity.e.getId()).setValue(Login_Activity.e);
                dismiss();
            } else {
                yes.setBackgroundResource(R.color.red);
            }
            break; // add this
        case R.id.btn_no:
            dismiss();
            break;
    }
}
0 голосов
/ 24 февраля 2019

Вы можете переопределить поведение автоотключения вручную, в зависимости от вашего диалогового класса.

Ответы на на этот вопрос предлагают несколько способов добиться этого, например, заменить прослушиватель onClick кнопки,или даже отключить его динамически, если ваши данные неверны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...