如何从Fragment(Kotlin)打开Fragment

f2uvfpb9  于 2023-06-24  发布在  Kotlin
关注(0)|答案(4)|浏览(150)

我正在寻找一种通过使用ClickListener在片段之间移动的方法;但我不知道如何把碎片移动到碎片。
我想这样移动:
A fragment have 4 cardview
点击1卡查看:移动到片段B
点击2卡视图:移至片段C
点击3卡查看:移动到片段D
点击4卡查看:移动到片段F
我已经做了片段移动到活动使用下面的代码

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        power655Card.setOnClickListener {
            val intent = Intent (getActivity(), Power655Activity::class.java)
            getActivity()?.startActivity(intent)
        }
a8jjtwal

a8jjtwal1#

Kotlin中,如果你想在Activity中加载不同的片段,你可以创建一个函数,你可以在任何需要加载片段的地方调用它。

private fun loadFragment(fragment: Fragment){
    val transaction = supportFragmentManager.beginTransaction()
    transaction.replace(R.id.fl_main, fragment)
    transaction.disallowAddToBackStack()
    transaction.commit()
}

如果你想从一个片段中加载片段,

val transaction = activity.supportFragmentManager.beginTransaction()
    transaction.replace(R.id.fl_main, SecondFragment())
    transaction.disallowAddToBackStack()
    transaction.commit()

在上面的代码spinnet中,SecondFragment()是您希望加载的片段的示例。所以我们也可以传递片段的示例,如上所示。

wnvonmuf

wnvonmuf2#

您可以使用requireActivity().supportFragmentManager.beginTransaction()来创建所需的fragments事务。

t1qtbnec

t1qtbnec3#

你可以改变片段,把它放在你的监听器里:

val fragmentB = FragmentB()
activity.getSupportFragmentManager().beginTransaction()
             .replace(R.id.layout_container, fragmentB, "fragmnetId")
             .commit();

R.id.layout_container是活动xml中的片段容器
fragmentId是片段的id,因此您可以稍后引用它。

k2arahey

k2arahey4#

val fragmentB =FragmentB()
activity?.getSupportFragmentManager()?.beginTransaction()?.replace(R.id.layout_container, fragmentB, "fragmnetId")?.commit();

相关问题