我正在使用NavController:Navigation.findNavController(活动,R.id.statistic_host_fragment)
。一切都很好,直到我旋转我的设备,然后我无法导航()
和popBackStack()
。
在日志中:FragmentNavigator:忽略popBackStack()调用:FragmentManager已保存其状态,而FragmentNavigator:忽略导航()调用:FragmentManager已保存其状态
当我看到谷歌的样本,他们没有任何关于这个问题,有所有的工作良好。所以我不明白这就是问题所在。
此外,当我使用MVVM时,我会在viewModel中保存navController,并在onCreate()之后在viewModel中重新设置控制器。它解决了旋转后的navigate()问题,但我仍然无法popBackStack()。之后,我尝试使用导航。html" target="_blank">setViewNavController(),但它不起作用。
val destId = currentController.currentDestination?.id
if (destId != R.id.wikiFragment && destId != R.id.statisticsFragment && destId != R.id.trackerFragment)
currentController.navigateUp()
并在主页活动中:
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
好的,我已经处理这个恼人的错误几个小时了,并解决了它。该键覆盖了onResume!
这样做一个标志变量
var completePlayed = false
然后做任何你想做的事情,比如旋转,在某些东西上,在这个改变值的内部,像这样
completePlayed = true
然后,覆盖onResume
override fun onResume() {
super.onResume()
if(completePlayed){
navController!!.navigate(R.id.action_chpaterSecondFragment_to_chapterPlayerFragment)
}else{
toast("false")
}
}
通过从ViewModel中提取所有NavController并从不保留NavController实例来解决问题。仅在需要访问时使用getter方法。
在屏幕旋转后,虽然我在super.onCreate(null);,中传递null,但我得到了object返回的nullPointerException异常。我知道在传递savedInstanceState=null的同时必须销毁并重新创建活动,这意味着活动应该在旋转后开始,因为它是第一次开始,为什么在旋转后会出现此异常? onCreate()代码段,其中名为historyText的对象 Logca
问题内容: 我有4页。 从第1页>第2页>第3页>第4页。 用户到达page_3并单击按钮后,它将导航到page_4。单击该按钮后,我想清除所有导航历史记录,以便当用户返回page_4时,该应用程序退出而不是返回至page_3。 我试过了: 但是什么也没发生。我仍然可以返回page_3,page_2等。如何做到这一点,以便当用户单击page_3上的按钮时,他可以转到page_4,而从page_4不
我在使用和arch组件时遇到了一个问题。当使用并旋转屏幕时,观察者会被触发... 我试图在所有片段生命周期方法中移动,但没有成功。 我的场景相对简单: null 提前感谢!
我想在模拟器上测试手机的旋转,我看到我们必须使用CtrlF11的所有地方,但它只旋转模拟器的图像,不会启动配置更改事件或重新绘制活动。 下面是我用CtrlF11得到的: 那么,我必须用什么来模拟真实的旋转呢?
我有一个应用程序小部件,当它更新时,获取具有与小部件匹配的维度的图像,并将该图像放入(通过)。它工作得很好。 但是对于支持主屏幕旋转的设备(我不是说基于设备方向的
实现在竖屏的NavigationController中push一个横屏的UIViewController,模拟器测试兼容5.0、6.0系统。实现程序中手动旋转屏幕的效果。 [Code4App.com]