//用户密码验证 public void validate() { XMLPaselUtils utils = new XMLPaselUtils(this); //密码保护 解析xml文件的工具类 用的是pull解析 final Setter setter = utils.read(); //我自己定义了一个bean,用来保存xml中保存的所有的配置信息,这样感觉在程序中使用比较方便 哈哈是个笨方法 if(setter.getPassword()!=null && setter.getPassword().trim().length()>0){ View addView = getLayoutInflater().inflate(R.layout.reg, null); final EditText reg_password = (EditText) addView.findViewById(R.id.reg_password); android.content.DialogInterface.OnClickListener oklistener = new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { boolean reg = setter.getPassword().trim().equals(reg_password.getText().toString()); if(!reg){ //密码不正确 mainActivity.this.finish(); } } }; android.content.DialogInterface.OnClickListener canclelistener = new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { mainActivity.this.finish(); } }; new AlertDialog.Builder(this).setCancelable(false) // 在dialog显示的时候将后退键功能取消 .setTitle("确认") .setView(addView) .setPositiveButton(R.string.okbutton, oklistener) .setNegativeButton(R.string.canclebutton, canclelistener) .show(); }
我在写程序的时候,当增加密码验证的时候,效果如下 但是在这个时候如果我点击后退按钮,密码输入框就会消失,就能够进入到程序进行操作了。呵呵,但是看到这个问题的时候,感觉自己真好笑,居然能犯这种错误!
后来自己想了方法重写后退键的方法,也是不行,主要是感觉重写的后退键按钮效果是在activity上的,而不是作用在这个dialog上的,后来更好笑的就是明白了,很简单的一个方法,就是在自己的new AlertDialog.Builder(this)后面增加 .setCancelable(false) // 在dialog显示的时候将后退键功能取消 就可以了 具体代码如上边所示: