【问题标题】:DialogFragment SetCancelable(false) not workingDialogFragment SetCancelable(false) 不起作用
【发布时间】:2021-12-30 17:58:09
【问题描述】:

请帮帮我。我尝试将 SetCancelable(false) 放在 dialogfragment 中,但仍然无法正常工作。

这是我的 DialogFragment:

    public static class UsageAcessDialogFragment extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the Builder class for convenient dialog construction
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

        builder.setMessage("Grant Usage Access permission")
            .setTitle("Usage Access Permission")
            .setCancelable(false)
            .setPositiveButton("Allow", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    // FIRE ZE MISSILES!
                    startActivityForResult(
                        new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS),
                        MY_PERMISSIONS_REQUEST_PACKAGE_USAGE_STATS);
                }
            });

        // Create the AlertDialog object and return it
        return builder.create();
    }
}

感谢那些愿意发表评论的人。

【问题讨论】:

  • “仍然无法工作”是什么意思?您的意思是在单击“允许”按钮之前,您可以在对话框之外单击以关闭对话框?
  • 你需要在DialogFragment而不是Dialog/Builder上调用setCancelable();例如,在设置 AlertDialog 之前只需 setCancelable(false);
  • 为什么要在 Fragment 中构建另一个对话框?

标签: java android dialog fragment dialogfragment


【解决方案1】:

你不需要建造者!你在对话片段里面 试试这个 setCancelable(false) 使用 builder.setCancelable(false)

【讨论】:

    【解决方案2】:

    您不需要将 setCancelable 与构建器相关联。直接写 setCancelable 方法,因为你在一个 DialogFragment 里面

       AlertDialog.Builder builder = new AlertDialog.Builder(requireContext());
                builder.setTitle("Usage Access Permission");
                builder.setMessage("Grant Usage Access permission");
                setCancelable(false); // this line
                builder.setPositiveButton("Allow", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        tartActivityForResult(
                                new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS),
                                MY_PERMISSIONS_REQUEST_PACKAGE_USAGE_STATS);
                    }
                });
        
                return builder.create();
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-13
      • 2018-03-09
      • 1970-01-01
      • 2020-08-19
      • 2019-12-16
      • 2015-04-19
      • 2015-03-01
      相关资源
      最近更新 更多