NavDirections 参数顺序错误

NavDirections arguments in wrong order

我正在使用 Android Jetpack Navigation 组件,它似乎要求我以错误的顺序传递参数。

我有两个片段(片段 1 和片段 2)。片段 2 有四个参数(bool、string、int、CustomParslableClass?)。 IDE 认为这是正确的顺序(如果我没有按该顺序显示红色波浪线和消息“类型不匹配 [...]”)。该应用程序 使用 按照该顺序构建良好(一年前我最后一次使用它),但今天我下载了所有内容并且不得不更新依赖项以构建。

这是IDE认为正确的正常代码行(曾经有效):

val direction = HomeViewPagerFragmentDirections.actionFragment1ToFragment2(false, "Favorites", 17, null)

但是,当我使用该命令 build 时,每个参数都出现构建错误:

e: filename.kt: (51, 106): The boolean literal does not conform to the expected type String
e: filename.kt: (51, 112): Type mismatch: inferred type is String but Int was expected
e: filename.kt: (51, 125): Type mismatch: inferred type is Int but PlaylistEntry? was expected
e: filename.kt: (51, 136): Null can not be a value of a non-null type Boolean

相反,当我像这样重新排序函数的参数时 (arg2, arg3, arg4, arg1):

val direction = HomeViewPagerFragmentDirections.actionFragment1ToFragment2("Favorites", 17, null, false)

构建良好,但 IDE 在每个参数下显示红色下划线,表示它们的顺序错误! (Type mismatch. Required: Boolean, Found: String)


可能重要:

当我将 arg2 更改为具有默认值时,IDE 期望相同,但适用于构建的顺序更改为 (arg3, arg4, arg1, arg2)


简单的清理和重建没有帮助。我还尝试清理项目,关闭 Android Studio 并重新启动,然后进行构建。我什至尝试删除两个片段之间的动作,然后重新创建(在时间之间构建)。都无济于事。请注意,当我 运行 构建的应用程序时,一切正常正常,这很好,但我认为参数顺序不应该像那样跳来跳去!

对于多参数,您应该像下面这样设置

val action = BlankFragmentDirections.actionBlankFragmentToSecondFragment()
        action.arg1 = 2
        action.arg2 = 3
        action.arg3 = "423"
        findNavController().navigate(action)