如何使用导航jetpack在另一个片段之上添加片段?

时间:2020-06-20 10:03:17

标签: android android-fragments navigation android-jetpack-navigation

我想在另一个片段之上添加一个片段。但是在使用导航jetpack时,似乎替换了片段而不添加。

我实际上想显示一个弹出页面,以便两个片段可以相互通信,这似乎适用于旧的添加片段功能,但是最近我们的项目已被导航jetpack取代。

2 个答案:

答案 0 :(得分:2)

其中一种选择是使第二个片段扩展DialogFragment并将其作为<dialog>而不是<fragment>添加到导航图。导航组件会自动将其显示为对话框。

这里是一个例子:

    <dialog
        android:id="@+id/myPopupDialogFragment"
        android:name="project.package.name.MyDialogFragment"
        android:label="MyDialogFragment">
        <!-- add arguments if you wish -->
    </dialog>

您可以使用全屏主题将该对话框全屏显示,也可以使用以下内容作为底页:

Theme.MaterialComponents.Light.BottomSheetDialog

答案 1 :(得分:0)

这对我有用->

    fun ShowDialog()
    {
        //Inflate the dialog with custom view
        val mDialogView = 
        LayoutInflater.from(context).inflate(R.layout.layout_popup, null)
    
        //AlertDialogBuilder
        val mBuilder = AlertDialog.Builder(context)
        .setView(mDialogView)

        //show dialog
        val alertDialog=mBuilder.show()

        mDialogView.button_close.setOnClickListener {
           alertDialog.dismiss()
        }

        mDialogView.button_submit.setOnClickListener {
           viewModel.data.value="Data"
           alertDialog.dismiss()
       }
   }

因此,我们可以添加一个对话框并向视图添加侦听器,而不是添加片段并与之通信。