📅  最后修改于: 2023-12-03 15:38:19.019000             🧑  作者: Mango
在 Kotlin 中从一个片段跳转到另一个片段通常使用 FragmentTransaction。在 FragmentTransaction 中,我们可以执行不同的操作,例如添加,替换和移除片段。请按照以下步骤进行操作。
要将片段添加到另一个片段,请使用以下代码:
val fragment = MyFragment()
supportFragmentManager.beginTransaction().add(R.id.fragment_container, fragment).commit()
在上面的代码中,MyFragment
是您要添加的片段,R.id.fragment_container
是您要在其中添加片段的视图容器的 ID。我们使用 supportFragmentManager.beginTransaction()
来开始事务,并使用 add()
方法将片段添加到 FragmentTransaction 中。
要替换片段,请使用以下代码:
val fragment = MyFragment()
supportFragmentManager.beginTransaction().replace(R.id.fragment_container, fragment).commit()
在上面的代码中,MyFragment
是您要替换的片段,R.id.fragment_container
是您要在其中替换片段的视图容器的 ID。我们使用 supportFragmentManager.beginTransaction()
来开始事务,并使用 replace()
方法将片段替换为 FragmentTransaction 中。
要将片段从另一个片段中删除,请使用以下代码:
val fragment = supportFragmentManager.findFragmentById(R.id.fragment_container)
if (fragment != null) {
supportFragmentManager.beginTransaction().remove(fragment).commit()
}
在上面的代码中,我们首先使用 supportFragmentManager.findFragmentById()
方法获取要删除的片段。如果片段不为空,则使用 supportFragmentManager.beginTransaction()
开始事务,并使用 remove()
方法将片段从 FragmentTransaction 中删除。
以下是一个完整的 Kotlin 示例代码,该代码演示了如何将一个片段转到另一个片段:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val fragmentA = FragmentA()
supportFragmentManager.beginTransaction().add(R.id.fragment_container, fragmentA).commit()
// 点击按钮时将从 Fragment A 转到 Fragment B
btn_goto_fragment_b.setOnClickListener {
val fragmentB = FragmentB()
supportFragmentManager.beginTransaction().replace(R.id.fragment_container, fragmentB).commit()
}
// 点击按钮时将从 Fragment B 转到 Fragment A
btn_goto_fragment_a.setOnClickListener {
val fragmentA = FragmentA()
supportFragmentManager.beginTransaction().replace(R.id.fragment_container, fragmentA).commit()
}
}
}
在上面的代码中,我们首先将 FragmentA 添加到 FragmentTransaction 中,并使用 commit()
方法应用该操作。
然后,我们将按钮 btn_goto_fragment_b
绑定到 FragmentB
,并使用 replace()
方法将 FragmentB
替换为 FragmentA
。
最后,我们将按钮 btn_goto_fragment_a
绑定到 FragmentA
,并使用 replace()
方法将 FragmentA
替换为 FragmentB
。