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
)
可能重要:
- arg1 (bool) 默认值为 false
- arg2(字符串)没有默认值
- arg3 (int) 没有默认值
- arg4 (CustomParslableClass?) 没有默认值(但可以为空)
当我将 arg2 更改为具有默认值时,IDE 期望相同,但适用于构建的顺序更改为 (arg3, arg4, arg1, arg2)
。
简单的清理和重建没有帮助。我还尝试清理项目,关闭 Android Studio 并重新启动,然后进行构建。我什至尝试删除两个片段之间的动作,然后重新创建(在时间之间构建)。都无济于事。请注意,当我 运行 构建的应用程序时,一切正常正常,这很好,但我认为参数顺序不应该像那样跳来跳去!
对于多参数,您应该像下面这样设置
val action = BlankFragmentDirections.actionBlankFragmentToSecondFragment()
action.arg1 = 2
action.arg2 = 3
action.arg3 = "423"
findNavController().navigate(action)
我正在使用 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
)
可能重要:
- arg1 (bool) 默认值为 false
- arg2(字符串)没有默认值
- arg3 (int) 没有默认值
- arg4 (CustomParslableClass?) 没有默认值(但可以为空)
当我将 arg2 更改为具有默认值时,IDE 期望相同,但适用于构建的顺序更改为 (arg3, arg4, arg1, arg2)
。
简单的清理和重建没有帮助。我还尝试清理项目,关闭 Android Studio 并重新启动,然后进行构建。我什至尝试删除两个片段之间的动作,然后重新创建(在时间之间构建)。都无济于事。请注意,当我 运行 构建的应用程序时,一切正常正常,这很好,但我认为参数顺序不应该像那样跳来跳去!
对于多参数,您应该像下面这样设置
val action = BlankFragmentDirections.actionBlankFragmentToSecondFragment()
action.arg1 = 2
action.arg2 = 3
action.arg3 = "423"
findNavController().navigate(action)