Обрабатывать задний стек с нижней навигационной панелью, как Youtube - PullRequest
2 голосов
/ 19 января 2020

У меня есть приложение с одним видом деятельности и нижней навигационной панелью ..

В нижней навигационной панели 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 голосов
/ 20 января 2020

Я думаю, вам также нужно заменить фрагмент так:

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