我想在另一个片段之上添加一个片段。但是在使用导航jetpack时,似乎替换了片段而不添加。
我实际上想显示一个弹出页面,以便两个片段可以相互通信,这似乎适用于旧的添加片段功能,但是最近我们的项目已被导航jetpack取代。
答案 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()
}
}
因此,我们可以添加一个对话框并向视图添加侦听器,而不是添加片段并与之通信。