【问题标题】:How can I prevent my dialog box getting hidden in Android如何防止我的对话框在 Android 中隐藏
【发布时间】:2017-07-30 19:58:31
【问题描述】:

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

目前我的活动类中有一个静态类,如下所示,我通过调用该类的静态方法 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;
    }
}

【问题讨论】:

    标签: android android-dialog android-dialogfragment


    【解决方案1】:

    致电dialog.setCanceledOnTouchOutside(false);

    这实际上曾经是默认设置。我不知道他们为什么改变它。请注意,这不会阻止他们只是点击后退按钮来关闭它——停止调用setCancelable(false);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多