无法在片段内创建对话框

Posted

技术标签:

【中文标题】无法在片段内创建对话框【英文标题】: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();

    

【问题讨论】:

【参考方案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

【讨论】:

以上是关于无法在片段内创建对话框的主要内容,如果未能解决你的问题,请参考以下文章

无法在对话框片段中的文本视图上设置文本

android错误“无法在未调用looper.prepare的线程内创建处理程序” [重复]

为啥软键盘在对话框片段内的 Web 视图中不起作用?

无法使自定义 DialogFragment 在 Fragment 上透明

活动中自定义对话框内的 ANDROID 片段

片段对话框中的片段膨胀引发错误“片段未创建视图”