【问题标题】:Can't popBackStack() after screen rotation. Android Navigation Components屏幕旋转后无法 popBackStack()。 Android 导航组件
【发布时间】:2019-03-06 07:44:17
【问题描述】:

我正在使用导航控制器:Navigation.findNavController(activity, R.id.statistic_host_fragment)。一切都很好,直到我旋转我的设备,然后我不能navigate()popBackStack()

在日志中: FragmentNavigator:忽略 popBackStack() 调用:FragmentManager 已经保存了它的状态并且 FragmentNavigator:忽略 navigate() 调用:FragmentManager 已保存其状态

当我看到 Google 示例时,他们对这个问题没有任何反应,一切正常。所以我不明白这是问题所在。

另外,当我使用 MVVM 时,我将 navController 保存在 viewModel 中,并在 onCreate() 在 vi​​ewModel 中重新初始化控制器之后。它解决了旋转后的导航()问题,但我仍然无法弹出BackStack()。之后我尝试使用Navigation.setViewNavController(),但它不起作用。

val destId = currentController.currentDestination?.id

    if (destId != R.id.wikiFragment && destId != R.id.statisticsFragment && destId != R.id.trackerFragment)
        currentController.navigateUp()

在 HomeActivity 中:

override fun onBackPressed() {
    if (vm.currentController.graph.startDestination == vm.currentController.currentDestination?.id) {
        super.onBackPressed()
    } else {
        vm.currentController.popBackStack()
    }
}

所有来源:https://github.com/SuperCatDev/OverHub/tree/feature/maps

【问题讨论】:

  • 你是如何弹回栈的,你能显示一些代码吗?
  • 您可能可以编辑您的问题。不要将代码放在 cmets 中。
  • 是的,这是个好主意)

标签: android android-architecture-navigation


【解决方案1】:

通过从 ViewModel 中提取所有 NavController 并且从不保留 NavController 实例来解决问题。仅在需要访问权限时使用 getter 方法。

【讨论】:

    【解决方案2】:

    好的,我已经解决了这个烦人的错误几个小时并解决了它。 关键是覆盖 onResume!

    所以像这样制作一个标志变量

    var completePlayed = false 
    

    然后做任何你想做的事情,比如旋转、onSomethingListener 和像这样的变化值

    completePlayed = true
    

    然后,覆盖 onResume

     override fun onResume() {
        super.onResume()
        if(completePlayed){
            navController!!.navigate(R.id.action_chpaterSecondFragment_to_chapterPlayerFragment)
        }else{
            toast("false")
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-30
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      • 2019-02-21
      • 2020-05-31
      相关资源
      最近更新 更多