你的位置:首页 > Java教程

[Java教程]android 如何让弹出的对话框不消失


Builder builder = new AlertDialog.Builder(this);
  builder.setTitle(android.R.string.dialog_alert_title)
    .setIcon(android.R.drawable.ic_dialog_info)
    .setPositiveButton(android.R.string.ok,
      new OnClickListener() {
       public void onClick(DialogInterface dialog,
         int which) {

       // 不消失
        try {
         java.lang.reflect.Field field = dialog
           .getClass().getSuperclass()
           .getDeclaredField("mShowing");
         field.setAccessible(true);
         field.set(dialog, false);
        } catch (Exception e) {
         e.printStackTrace();
        }
       }
      })
    .setNegativeButton(android.R.string.no,
      new OnClickListener() {
       public void onClick(DialogInterface dialog,
         int which) {

        // 消失
        try {
         java.lang.reflect.Field field = dialog
           .getClass()
           .getSuperclass()
           .getDeclaredField("mShowing");
         field.setAccessible(true);
         field.set(dialog, true);
        } catch (Exception e) {
         e.printStackTrace();
        }
        dialog.dismiss();
       }
      }).show();

以上方法,经过测试之后发现,如果在点击“确定”之前点击对话框以外的地方,对话框会消失;但如果点击“确定”再点击对话框以外的地方,则不会消失。