我有一个具有单个 Activity 和底部导航 View 的应用程序。

底部导航中有4个项目,所以我有4个片段。

我的问题是如何使用底部导航 View (如Youtube或Instagram)处理后置堆栈?

我正在使用Kotlin,这是我的代码:

  nav_view.setOnNavigationItemSelectedListener {
        when (it.itemId) {
            R.id.navigation_home -> {
                replaceFragment(homeFragment)
                true
            }
            R.id.navigation_projects -> {
                replaceFragment(projectsFragment)
                true
            }
            R.id.navigation_team -> {
                replaceFragment(teamFragment)
                true
            }
            R.id.navigation_contact -> {
                replaceFragment(contactUsFragment)
                true
            }
            else -> false
        }
    }

private fun replaceFragment(fragment: Fragment) {
    supportFragmentManager.beginTransaction()
        .replace(R.id.fragment_container, fragment)
        .commit()
}

override fun onBackPressed() {
    if (nav_view.selectedItemId == R.id.navigation_home) {
        super.onBackPressed()
    } else {
        nav_view.selectedItemId = R.id.navigation_home
    }
}

最佳答案

我认为您也需要像这样替换片段:

override fun onBackPressed() {
    if (nav_view.selectedItemId == R.id.navigation_home) {
        super.onBackPressed()
    } else {
        nav_view.selectedItemId = R.id.navigation_home
        replaceFragment(homeFragment) // add this line
    }
}

07-24 09:49
查看更多