簡體   English   中英

當我按回來時導航片段的問題

[英]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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM