【问题标题】:Problem with navigating fragments when i press on back当我按下返回时导航片段的问题
【发布时间】:2019-08-21 12:33:42
【问题描述】:

有一个片段,我在其中显示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()
        }
    }

【问题讨论】:

    标签: android android-fragments android-fragmentactivity onbackpressed


    【解决方案1】:

    问题是您尚未将当前片段添加到后台堆栈。 为了到达起点,您必须标记片段。 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

    【讨论】:

    • 问题没有解决(也许这里的问题也在数据中,但我还不能确定
    猜你喜欢
    • 1970-01-01
    • 2019-09-05
    • 2019-03-22
    • 1970-01-01
    • 2021-12-27
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多