当我按下返回时导航片段的问题

Problem with navigating fragments when i press on back

有一个显示 recyclerView 列表的片段。 当我单击 MainActivity 中的列表项时,我调用方法:

fun FragmentActivity?.replaceFragment(fragment: Fragment): Boolean {
    if (this == null) return false
    try {
        supportFragmentManager?.beginTransaction()?.replace(
            R.id.container, fragment,
            fragment.createTagName()
        )?.commit()
    } catch (ignored: IllegalStateException) {
        return false
    }
    return true
}

在此之后我按下系统后退按钮,我有一个重复的列表。

还有我的 MainActivity 下一个乐趣:

 override fun onBackPressed() {
        val onBackPressListener = currentFragmentInContainer() as? OnBackPressListener
        if (onBackPressListener?.onBackPress() != true) {
            super.onBackPressed()
        }
    }

问题是您没有将当前片段添加到返回堆栈。 为了到达起点,您必须标记片段。 addToBackStack(tag:String) 将帮助您做到这一点。

代码:

fun FragmentActivity?.replaceFragment(fragment: Fragment): Boolean {
    if (this == null) return false
    try {
        supportFragmentManager?.beginTransaction()?.replace(
            R.id.container, fragment,
            fragment.createTagName()
        ).addToBackStack(fragment.createTagName())?.commit()
    } catch (ignored: IllegalStateException) {
        return false
    }
    return true
}

这是关于该方法的文档:addToBackStack