📜  如何在 kotlin 中从片段转到另一个片段 (1)

📅  最后修改于: 2023-12-03 15:38:19.019000             🧑  作者: Mango

在 Kotlin 中从片段转到另一个片段

在 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