【问题标题】:How to add fragment on top of another fragment using navigation jetpack?如何使用导航喷气背包在另一个片段上添加片段?
【发布时间】:2020-06-20 10:03:17
【问题描述】:

我想在另一个片段之上添加一个片段。但是在使用导航jetpack的时候,好像是替换掉的fragment不加了。

我其实想显示一个弹出页面,这样两个片段就可以相互通信,这似乎适用于旧的添加片段功能,但最近我们的项目已被导航喷气背包取代。

【问题讨论】:

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


    【解决方案1】:

    其中一个选项是让您的第二个片段扩展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
    

    【讨论】:

    • 感谢对话的建议。我创建了一个自定义对话框,它对我有用。
    • @kunaljaiswal,不客气。如果您认为它已经解决了问题,请接受答案,以便其他人可以找到此解决方案。
    【解决方案2】:

    这对我有用->

        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()
           }
       }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      相关资源
      最近更新 更多