【问题标题】:Cannot create dialog inside a fragment无法在片段内创建对话框
【发布时间】:2021-09-20 04:28:36
【问题描述】:

我正在尝试在片段内创建一个对话框。当我尝试按下按钮并进入应用程序折叠的对话框时。 我猜代码不对,你能帮我吗?

这是我的代码:

 private void openDialog(){


      Dialog dialog=new Dialog(getContext());
     //AlertDialog.Builder builder=new AlertDialog.Builder(getContext());

    LayoutInflater layoutInflater=this.getLayoutInflater();
        View custom_dialog=getActivity().getLayoutInflater().inflate(R.layout.geo_dialog,null);

     dialog.setContentView(custom_dialog);
    //   add_geofence_radius= custom_dialog.findViewById(R.id.radius_size);
        save_btn=custom_dialog.findViewById(R.id.save_btn);
        cancel_btn=custom_dialog.findViewById(R.id.cancel_btn);
      /*  save_btn.setOnClickListener(new View.OnClickListener() {
            @Override



            }
        });


       */
        /*cancel_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.cancel();
            }
        });

         */

   //    dialog.setTitle("hello");
     dialog.show();

    }

【问题讨论】:

    标签: android-studio dialog fragment


    【解决方案1】:

    在 android 中显示对话框的最佳方式是使用“DialogFragments”,因为它们知道它所附加的视图的生命周期(即片段/活动)。

    这是 Android 文档中提供的示例:

    public class PurchaseConfirmationDialogFragment extends DialogFragment {
           @NonNull
           @Override
           public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
                  return new AlertDialog.Builder(requireContext())
                        .setMessage(getString(R.string.order_confirmation))
                        .setPositiveButton(getString(R.string.ok), (dialog, which)    -> {} )
               .create();
           }
    
           public static String TAG = "PurchaseConfirmationDialog";
    }
    

    显示对话框使用:

    new PurchaseConfirmationDialogFragment().show(
       getChildFragmentManager(), PurchaseConfirmationDialog.TAG);
    

    有关 dialogFragments 的更多参考,请查看:Create a DialogFragment

    【讨论】:

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