我正在使用从对话框扩展的类来更改密码。当我按“是”按钮时,对话框关闭。如果我输入错误,我希望对话框不会消失。
这是我的代码
@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;
}
}
感谢您的帮助
答案 0 :(得分:1)
您需要为break
添加case R.id.btn_yes
语句。根据{{3}}:
break语句是必需的,因为没有它们,切换块中的语句会掉入:匹配case标签之后的所有语句都将按顺序执行,而不管后续case标签的表达如何,直到遇到break语句为止。
在您遇到的情况下,单击ID为btn_yes
的按钮,然后执行if
或else
中的代码块,然后程序流继续执行{{1}中的代码},因为它并没有因匹配大小写中断而停止。
case R.id.btn_no
答案 1 :(得分:0)
您可以根据对话框类手动覆盖自动关闭行为。
this question上的答案提供了几种方法来实现此目的,例如替换按钮的onClick侦听器,或者甚至在输入无效时动态禁用它。