关于对话框点击外面消失

          有时候 我们做项目的时候,需要对方在弹出的对话框中输入正确的验证吗,这种情况下,为了有较好的用户体验,那么点击对话框的外面,对话框就不能消失 ,就得用对话框的 那我们就需要用的对话框的另外一个方 .setCancelable(false)当用户输入的验证码不正确的时候,点击确定按钮,对话框不消失,我用的是java的反射机制。下面贴上代码供大家批评啊:public void CheckingCode(){final EditText editText = new EditText(WelcomeActivity.this);new AlertDialog.Builder(WelcomeActivity.this)         .setTitle("请输入验证码")  .setIcon(android.R.drawable.ic_dialog_info)  .setView(editText)                //创建一个输入的对话框.setCancelable(false)      //这句话很重要,加上它,点击对话框外边,对话框就不会消失.setPositiveButton("确定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubtry {String code = editText.getText().toString();Field field = null;if(code.equals("123")){handler.sendEmptyMessage(2);//下面的这个很重要哦,通过java反射机制得到对话框父级别的“mshowing”方法field = dialog.getClass().getSuperclass().getDeclaredField("mShowing"); field.setAccessible(true);//设置为true,那么点击确定对话框剧不会消失,相反对话框才会消失(如下面的else语句)field.set(dialog, true);          }else{field = dialog.getClass().getSuperclass().getDeclaredField("mShowing"); field.setAccessible(true); field.set(dialog, false);Toast.makeText(WelcomeActivity.this, "亲,您输入的验证码不正确!", 1000).show();}} catch (SecurityException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NoSuchFieldException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}}})  .setNegativeButton("取消", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubtry {Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");field.setAccessible(true);field.set(dialog, true);} catch (Exception e) {e.printStackTrace();}}} )  .show(); }


 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部