android-fragments 如何通过点击底部表内的按钮来替换底部表外的碎片?

oaxa6hgo  于 2022-11-14  发布在  Android
关注(0)|答案(1)|浏览(179)

所以我决定让我的应用程序只有一个Activity。在我的一个片段中(fragment(A))我通过单击Button open BS打开了bottom sheet。现在,在底部表单中,有一个FragmentContainerView,其中包含两个片段,我想单击此FragmentContainerView中的Button B(在fragment(B)中),将fragment(A)更改为fragment(C)并关闭底部表单。
我知道,通过使用下面的代码,可以交换片段并关闭底部工作表(这里,我单击FragmentContainerView外部的按钮,但仍在底部工作表内部):

ButtonSH.setOnClickListner{
    parentFragmentManager.commit {
          // replace fragment
          replace<FragmentC>(R.id.fragment_container_that_holds_fragmets_A_and_C)
    }
    // close bottom sheet
    dismiss()
}

但我就是不明白如何通过在fragment(b)中的FragmentContainerView内单击Button B来做同样的事情。
如果有关系的话,fragment(A)并不是直接在活动内部,它是在其他几个碎片内部。
下面是一张图片,以便更好地理解:

qnyhuwrf

qnyhuwrf1#

因此我的解决方案是为底部表单及其片段创建sharedViewModel,并为保存片段(A)的容器和底部表单使用另一个sharedViewModel。我观察到viewModel中的变量替换片段。有关官方文档,请访问this

相关问题