android - 如何在最小化应用程序后坚持导航组件目的地

标签 android kotlin android-architecture-navigation

我有一个带有 3 个主要目的地的应用程序,可以通过底部导航 View 访问。每个目的地都有自己的导航图。
问题是当我最小化并重新打开我的应用程序时,导航组件会重置为默认目的地。为什么会这样?
我的主要 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()这样导航设置就不会在每次 fragment 暂停和重新启动时完成。

关于android - 如何在最小化应用程序后坚持导航组件目的地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67189740/

相关文章:

Android SafeArgs 生成的操作缺少参数

android - 如何从 Android 导航 Controller 中的通知导航 Fragment

java - 如何对用户多次点击使用react

java - 在 kotlin 的 intellij Android Studio 中禁用 Wild Cart 导入

android - 如何使用 SafeArgs 将 `null` 设置为可空参数的默认值?

Android Studio 无法找到显式 Activity 类,尽管类存在

java - fragment 未显示在 Android 导航组件中

android - 从应用程序启动启动服务,而不是 Activity

android - onOptionsItemSelected 返回不正确的 ID

javascript - Google Analytics 会干扰 Android 浏览器中的 history.back() 吗?