kotlin.TypeCastException:无法在NavigationExtensionsKt将null强制转换为非null类型的androidx.navigation.fragment.NavHostFragment

时间:2020-05-04 14:28:40

标签: android android-fragments kotlin bottomnavigationview

Exception

我从NavigationAdvancedSample复制了NavigationExtensions.kt扩展文件,但出现此异常:

3 个答案:

答案 0 :(得分:3)

更新:确保菜单项ID与导航资源文件ID相同

也:如果您在ItemReselectedListener方面遇到问题 添加空安全检查,您的侦听器应该是这样的:

setOnNavigationItemReselectedListener { item ->
        val newlySelectedItemTag = graphIdToTagMap[item.itemId]
        val selectedFragment = fragmentManager.findFragmentByTag(newlySelectedItemTag)
                as NavHostFragment?
        val navController = selectedFragment?.navController
        // Pop the back stack to the start destination of the current navController graph
        navController?.popBackStack(
            navController.graph.startDestination, false
        )
    }

答案 1 :(得分:0)

我也遇到了这个难题,解决方案实际上非常简单。

确保菜单项的ID与NAV_GRAPH的ID匹配,而不与目标的ID匹配。

我对菜单项和目的地使用相同的ID,但是在这种情况下,菜单项应与NAV_GRAPH具有相同的ID。

答案 2 :(得分:0)

我也遇到了同样的问题

检查您是否已设置开始目的地并将其附加到片段。 在您的导航图中设置 app:startDestination="@id/your fragment"

这应该可以解决您的问题