按下返回键时AlertDialog被关闭了。

6

我正在使用具有以下属性的警报对话框。问题是当我点击返回按钮或在对话框外部触摸时,对话框被关闭了,而我不希望这样。因为设置setCancelable没有帮助,所以我该如何解决这个问题呢?

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

你正在扩展DialogFragment吗? - Blackbelt
是的,我正在扩展对话框片段。 - Ravi
试试这个 - https://dev59.com/i2ox5IYBdhLWcg3w5IRv - Anukool
6个回答

18

由于您正在扩展 DialogFragment,因此需要调用

setCancelable(false);

在其 onCreate

setCancelable(false);


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();

0
new AlertDialog.Builder(getActivity());

尝试将一个在堆栈底部(而非顶部)的活动放在那里。

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();              
                }
            });
           }

0

这是所有Android设备的默认行为,在更改之前慎重考虑,因为用户在按返回按钮时期望它发生。

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


2
onBackPressed在扩展DialogFragment类的类中不可用。 - Android

0

不,那是警示对话框的默认行为,请参考此链接dialog


关于那个注释的一点说明。你可以实现一个onDismiss,但似乎需要API 17作为最低版本要求。 - Shygar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接