如何防止我的对话框在Android中隐藏

时间:2013-05-08 20:49:14

标签: android android-dialog android-dialogfragment

我真正想要的是Windows调用模式对话框,即用户必须先关闭它才能执行其他操作。如何在Android中获得该效果?这是第一次有人运行我的应用程序时特别重要,因为我希望他们接受一些条款和条件,但我还有其他需要的情况。

目前我的activity类中有一个静态类,如下所示,我通过在该类上调用静态方法Create(...)来获取对话框。但是,如果用户只是触摸对话框后面的活动,或触摸操作栏上的搜索图标,则会隐藏对话框。有人可以帮忙吗?

public static class SimpleDialog extends DialogFragment {
    private static final String DialogLayoutIdString = "DialogLayoutId";

    public static SimpleDialog Create(Activity activity, int Layoutid) {
        FragmentManager fm = activity.getFragmentManager();
        SimpleDialog about = new SimpleDialog();
        Bundle args = new Bundle();
        args.putInt(DialogLayoutIdString, Layoutid);
        about.setArguments(args);
        about.show(fm, "");
        return about;
    }

    private int LayoutId;
    private Activity activity;

    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        Bundle args = getArguments();
        LayoutId = args.getInt(DialogLayoutIdString);
        setCancelable(cancellable);
        activity = getActivity();
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState){
        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
        // various code to create the dialog box
        AlertDialog alert = builder.create();
        return alert;
    }
}

1 个答案:

答案 0 :(得分:2)

致电dialog.setCanceledOnTouchOutside(false);

实际上曾经是默认值。我不知道他们为什么要改变它。请注意,这不会阻止他们只是按下后退按钮关闭它 - 停止呼叫setCancelable(false);