Диалог отклонить по кнопке да

1

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

Это мой код

@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;
    }
}

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

Теги:
dialog

2 ответа

1
Лучший ответ

Вам нужно добавить оператор break для case R.id.btn_yes. Согласно документам:

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

В вашей ситуации нажимается кнопка с идентификатором btn_yes, затем 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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню