[英]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
的按钮,然后执行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;
}
}
您可以手动覆盖自动关闭行为,具体取决于您的对话框类。
这个问题的答案提供了几种方法来实现这一点,例如替换按钮的 onClick 侦听器,甚至在您的输入无效时动态禁用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.