6

我正在使用具有以下属性的警报对话框。问题是当我单击后退按钮或在对话框外部触摸我不想要的时对话框被关闭。我该如何解决这个问题,因为 setCancelable 没有帮助。

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setMessage(R.string.check_internet);
    builder.setCancelable(false);
4

6 回答 6

18

由于您正在扩展 aDialogFragment您需要致电

setCancelable(false);

在它里面onCreate

只要setCancelable(false);

于 2013-05-13T11:58:38.093 回答
2
AlertDialog.Builder builder = new AlertDialog.Builder(this); // this activity context
builder.setMessage(R.string.check_internet);
AlertDialog alertDialog =builder.create();
alertDialog.setCancelable(false);
alertDialog.show();
于 2013-05-13T11:58:06.333 回答
0
new AlertDialog.Builder(getActivity());

尝试在那里放置一个活动,它位于堆栈的底部(而不是顶部)

于 2013-05-13T11:55:03.567 回答
0

这是所有Android设备的默认行为,在更改之前请三思而后行,因为用户在按下后退按钮时会期望

但是,您可以通过覆盖 OnBackPressed()类的方法来更改该行为Dialog/DialogFragment。不要super.OnBackPressed()在被覆盖的函数内部调用,但是这可能会泄漏内存,所以要小心..

于 2013-05-13T11:58:09.943 回答
0
   public void showAlert1(){
     MainActivity.this.runOnUiThread(new Runnable() {
     public void run() {
     AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                    builder.setMessage(R.string.check_internet); 
                    builder.setIcon(R.drawable.tick);
                    builder.setCancelable(false);
                    AlertDialog alert = builder.create();
                    alert.show();              
                }
            });
           }
于 2013-05-13T12:04:44.410 回答
0

不,这是警报对话框的默认行为,请参阅此链接对话框

于 2013-05-13T12:11:38.067 回答