android点击AlertDialog的button不退出对话框的方法

Android弹出对话框时,默认情况下无论点击哪个button,触发事件后对话框都会自动关闭。

可以利用反射机制,使触发按钮点击事件之后不退出对话框。

解决方法:在setButton的OnClickListener的OnClick里改变field,filed的改变对于该对象来说是全局的,所以想要关闭时也要添加代码。

不退出对话框:

     .setPositiveButton("开始测试",  new  DialogInterface.OnClickListener(){

            @Override
            public void onClick(DialogInterface dialog, int which) {                 
                try
                {
                    Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
                    field.setAccessible(true);
                     //设置mShowing值,欺骗android系统
                    field.set(dialog, false);
                }catch(Exception e) {
                    e.printStackTrace();
                }
            }

        })

点击退出对话框:
        .setNegativeButton("退出测试", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                try
                {
                    Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
                    field.setAccessible(true);
                     //设置mShowing值,欺骗android系统
                    field.set(dialog, true);
                } catch(Exception e) {
                    e.printStackTrace();
                }

            }
        })




你可能感兴趣的:(android,exception,测试,dialog,button)