【发布时间】:2020-06-20 10:03:17
【问题描述】:
我想在另一个片段之上添加一个片段。但是在使用导航jetpack的时候,好像是替换掉的fragment不加了。
我其实想显示一个弹出页面,这样两个片段就可以相互通信,这似乎适用于旧的添加片段功能,但最近我们的项目已被导航喷气背包取代。
【问题讨论】:
标签: android android-fragments navigation android-jetpack-navigation
我想在另一个片段之上添加一个片段。但是在使用导航jetpack的时候,好像是替换掉的fragment不加了。
我其实想显示一个弹出页面,这样两个片段就可以相互通信,这似乎适用于旧的添加片段功能,但最近我们的项目已被导航喷气背包取代。
【问题讨论】:
标签: android android-fragments navigation android-jetpack-navigation
其中一个选项是让您的第二个片段扩展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
【讨论】:
这对我有用->
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()
}
}
因此,我们可以添加一个对话框并为视图添加一个侦听器,而不是添加片段并与之通信。
【讨论】: