Android AlertDialog重新打开或阻止关闭

问题描述:

我有一个具有两个回调函数的AlertDialog。当用户点击“回拨”时,“是”或“否”。Android AlertDialog重新打开或阻止关闭

public AlertDialog getMydialog(final Context context, final MyCallback onSuccess,final MyCallback onCancel) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(context); 
     builder.setMessage("MSG"); 
     builder.setCancelable(false); 
     builder.setTitle("TITLE"); 

     builder.setPositiveButton("YES", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int id) { 
       onSuccess.callback(); 
      } 
     }); 
     builder.setNegativeButton("NO", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int id) { 
       onCancel.callback(); 
      } 
     }); 

     return builder.create(); 
    } 

我的回调:

myDialog = new MyClass(this).MyDialog(this, new MyCallback() { 
     @Override 
     public void callback() { 
      Log.d("test","test Click-YES"); 
     } 
    }, new MyCallback() { 
     @Override 
     public void callback() { 
      Log.d("test","test Click-NO"); 
     } 
    }); 
myDialog.show(); 

当我点击不超过对话框已被解除。 但不能再显示。例如:

myDialog = new MyClass(this).MyDialog(this, new MyCallback() { 
     @Override 
     public void callback() { 
      Log.d("test","test Click-YES"); 
     } 
    }, new MyCallback() { 
     @Override 
     public void callback() { 
      Log.d("test","test Click-NO"); 
      myDialog.show() // isnt work 
     } 
    }); 
myDialog.show(); 

任何人有想法禁用.dismiss当我点击“否”按钮? 或重新打开对话框?

谢谢!

为了防止Dialog得到解雇你可以在AlertDialog使用setOnShowListener并添加您的代码..

final AlertDialog mAlertDialog = getMydialog(); //get Dialog 
mAlertDialog.setOnShowListener(new DialogInterface.OnShowListener() { 

    @Override 
    public void onShow(DialogInterface dialog) { 

     Button button = mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE); 
     button.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       //your code 
       //you can call dissmiss later 
      } 
     }); 

     Button button2 = mAlertDialog.getButton(AlertDialog.BUTTON_NEGATIVE); 
     button2.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       //your code 
       //you can call dissmiss later 
      } 
     }); 
    } 
}); 
mAlertDialog.show(); 
+0

谢谢。这很棒! – vihkat

((AlertDialog)对话框).getButton(AlertDialog.BUTTON_NEGATIVE) .setEnabled(false);

将此属性设置为您的警报对话框。这将禁用负号按钮

+0

一个按钮无任何功能:|其有趣:)也许它是如此无用。 – vihkat