AlertDialog.Builder.setCancelable(false)无效

  实现一个对话框功能的时候,默认点击对话框外部或者点击后退键使对话框消失,但是我们不想要这样怎么办?

  对话框在两种情况下:

  1.如果直接使用一个AlertDialog视图的话:

	new AlertDialog.Builder(Context context)
        	...
        	.setCancelable(false)
        	.create()
        	.show();

直接设置视图不能取消。

  2.如果AlertDialog视图封装在DialogFragment中:

	public class MyFragment extends DialogFragment {

    		@Override
    		public Dialog onCreateDialog(Bundle savedInstanceStete) {
        		return new AlertDialog.Builder(getActivity())
                		...
                		.create();
    		}
	}
不管此时setCancelable(boolean cancelable) 里面的参数为true或者false点击对话框外面的区域都会取消视图,
因为在fragment里面有一个Dialog变量,当onCreateDialog()方法返回的Dialog赋给变量后,
会调用setCancelable(boolean cancelable)方法,而默认的是true。
  所以,可以这样写:
 
  
	FragmentManager fm = getActivity().getSupportFragmentManager();
	MyFragment dialog = new MyFragment();
	dialog.setCancelable(false);
	dialog.show(fm, "");
 
  
第一次写博客,不好看,有点凌乱,求谅解!

你可能感兴趣的:(Android)