在開發的時候遇到一個問題,就是一觸摸對話框邊緣外部,對話框會自動消失。這個問題很糾結啊,查找了一下發現從Android 4.0開始,AlertDialog有了變化,就是在觸摸對話框邊緣外部,對話框會自動消失,查了源碼,找到解決辦法:
研究其父類時候發現,可以設置這么一條屬性,在AlertDialog.Builder.create()之后才能調用這兩個方法
方法一:
setCanceledOnTouchOutside(false);調用這個方法時,按對話框以外的地方不起作用。按返回鍵還起作用
方法二:
setCancelable(false);調用這個方法時,按對話框以外的地方不起作用。按返回鍵也不起作用
這兩個方法都屬於Dialog方法,可查閱源碼
修改后的源碼如下:
case 1: dismissDialog(1); new Builder(SplashActivity.this).setTitle("提示").setCancelable(false) .setMessage("獲取軟件初始化信息失敗!\n請檢查網絡是否通暢。") .setPositiveButton("確認", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); SplashActivity.this.finish(); } }).show(); break;