立即调用导航组件导航到目标会导致错误

时间:2018-11-19 16:48:05

标签: android kotlin android-architecture-navigation

像这样在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。 您能解释一下为什么会发生这种情况吗,也许可以帮助我针对此问题提出其他解决方案?

1 个答案:

答案 0 :(得分:0)

在您的情况下,这是关于设置起始目标的,最好在需要时使用以下代码行进行更改:navController.getGraph().setStartDestination(int id); 您还应注意的另一点是,在Activity中的onCreate()内调用导航方法是有风险的,因为navHost可能使FragmentManager尚未就绪。确保已附加起始目的地,然后开始导航过程。