最小化应用程序后如何保留导航组件目标

How to persist navigating component destination after minimizing the app

我有一个包含 3 个主要目的地的应用程序,可以通过底部导航视图访问这些目的地。每个目的地都有自己的导航图。

问题是当我最小化并重新打开我的应用程序时,导航组件重置为默认目的地。为什么会这样?

我的主要activity:(无关代码省略)

class MainActivity : AppCompatActivity() {

    // List of base host containers
    val fragments = listOf(
            HomeHostFragment(),
            CoursesHostFragment(),
            SearchHostFragment()
    )

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val viewPager: ViewPager = findViewById(R.id.main_activity_pager)
        viewPager.adapter = ViewPagerAdapter()
    }

    inner class ViewPagerAdapter : FragmentPagerAdapter(supportFragmentManager) {
        override fun getItem(position: Int): Fragment =
                fragments[position]

        override fun getCount(): Int =
                fragments.size
    }
}

HomeHostFragment.kt:

class HomeHostFragment : Fragment() {
    private lateinit var navController: NavController

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? =
            inflater.inflate(R.layout.fragment_home_host, container, false)

    override fun onStart() {
        super.onStart()
        navController = requireActivity().findNavController(R.id.nav_host_home)
        navController.setGraph(R.navigation.nav_graph_home)

        NavigationUI.setupWithNavController(toolbar_home, navController)
    }

    fun onBackPressed(): Boolean {
        return navController.navigateUp()
    }
}

每当调用 onStart() 时,都会再次调用 NavigationUI.setupWithNavController() 以重置导航。将此调用移至 onViewCreated(),以便每次片段暂停和重新启动时都不会完成导航设置。