我正在开发一个小项目并尝试使用新的导航架构组件。当我试图向目的地添加一些参数时,我得到了“Unresolved reference:NavArgs”错误。
我按照这个指南https://developer.android.com/topic/libraries/architecture/navigation/navigation-pass-data#kotlin已经添加了
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha11"
到我的项目gradle文件,并添加
apply plugin: 'androidx.navigation.safeargs.kotlin'
到我的应用程序gradle文件。
如上面的指南所示,我想使用val args: AddKittenFragmentArgs by navArgs()
来获取传递的参数。但navArgs()
不被承认。
此外,生成的代码中的NavArgs
也未解析。
data class MyFragmentArgs(val argOne: String? = "\"\"", val argTwo: String? = "\"\"") : NavArgs
根据该页面上的文档:
使用
-ktx
依赖项时,Kotlin用户还可以使用by navArgs()属性委托来访问参数。
确保您遵循Adding Components documentation并使用navigation-fragment-ktx
依赖:
implementation "android.arch.navigation:navigation-fragment-ktx:1.0.0-alpha11"
我遇到了同样的问题,直到我意识到导航组件的项目依赖项使用的版本与插件指定的版本不同(在类路径中)。
即在项目的build.gradle中
classpath 'android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-beta01'
在app build.gradle中
// Navigation
implementation 'android.arch.navigation:navigation-fragment-ktx:'+ rootProject.navigationVersion
implementation 'android.arch.navigation:navigation-ui-ktx:' + rootProject.navigationVersion
navigationVersion的地方
ext {
...
navigationVersion = "1.0.0-alpha08"
}
lint不会告诉您插入依赖项时库的更新。
我有同样的问题,但有-ktx
扩展。干净的构建对我有用。
最新版本1.0.0似乎解决了这个问题。只需将导航依赖性版本更改为1.0.0
,同时添加其他答案中提到的-ktx
依赖项,一切都应该有效。
我通过从Android Studio的Clean Project
菜单中执行Build
来解决这个问题。
转到菜单:Build
>> Clean Project