使用底部导航视图(如Youtube)处理堆栈

时间:2020-01-19 13:52:36

标签: android android-studio kotlin bottomnavigationview

我有一个具有单个活动和底部导航视图的应用程序。

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

我的问题是如何使用底部导航视图(如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
    }
}

1 个答案:

答案 0 :(得分:0)

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

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
    }
}