繁体   English   中英

对话框关闭是按钮

[英]Dialog dismiss on yes button

我正在使用从对话框扩展的类来更改密码。 当我按下是按钮时,对话框被关闭。 如果我输入错误,我希望对话框不会关闭。

这是我的代码

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

谢谢你的帮助

您需要为case R.id.btn_yes添加break语句。 根据文档

break 语句是必要的,因为没有它们,switch 块中的语句就会失败:匹配 case 标签之后的所有语句将依次执行,不管后续 case 标签的表达式,直到遇到 break 语句

在您的情况下,单击带有 id btn_yes的按钮,然后执行ifelse的代码块,然后程序流继续执行代码, 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;
    }
}

您可以手动覆盖自动关闭行为,具体取决于您的对话框类。

这个问题的答案提供了几种方法来实现这一点,例如替换按钮的 onClick 侦听器,甚至在您的输入无效时动态禁用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM