像这样在onCreate方法中导航:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.magic_mile_host)
setSupportActionBar(toolbar_start_test)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setHomeAsUpIndicator(R.drawable.ic_arrow_back_black_24dp)
navController = findNavController(R.id.nav_host_magic_mile)
navigateToMyTests()
}
这是我的navigateToMyTests()
实现
navController.navigate(R.id.myTestsFragment)
该问题仅在我立即调用此函数时出现。
问题是当我在来自myTestsFragment
的片段上时。旋转屏幕后,当前片段不会恢复,但myTestsFragment
总是会恢复。
之所以这样做,是因为在某些情况下我想在导航图中忽略startDestination。 您能解释一下为什么会发生这种情况吗,也许可以帮助我针对此问题提出其他解决方案?
答案 0 :(得分:0)
在您的情况下,这是关于设置起始目标的,最好在需要时使用以下代码行进行更改:navController.getGraph().setStartDestination(int id);
您还应注意的另一点是,在Activity中的onCreate()
内调用导航方法是有风险的,因为navHost可能使FragmentManager尚未就绪。确保已附加起始目的地,然后开始导航过程。