未解决的参考:向目标添加一些参数后的 NavArgs
Unresolved reference: NavArgs after added some arguments to destination
我正在做一个小项目并尝试使用新的导航架构组件。当我尝试向目的地添加一些参数时,出现 "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
根据该页面上的文档:
When using the -ktx
dependencies, Kotlin users can also use the by navArgs() property delegate to access arguments.
确保您遵循 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'
在应用程序中 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 不会在插入依赖项时告诉您库有更新。
最新发布的1.0.0版本似乎已经解决了这个问题。只需将导航依赖项版本更改为 1.0.0
并添加其他答案中提到的 -ktx
依赖项,一切都应该有效。
我通过 Android Studio 的 Build
菜单中的 Clean Project
解决了这个问题。
转到菜单:Build
>> Clean Project
仅供参考,如果你想传递 String
你的 argType 应该是 string
而不是字符串。
app:argType="string"
我遇到了同样的问题,我通过执行以下步骤解决了这个问题
Build -> Clean Project
- 从
nav_graph.xml
文件中删除参数
- 创建新参数
Build -> Rebuild Project
- 设置参数
val action: NavDirections = AreThereAnyDecayedTeethInTheAreaOfPainFragmentDirections
.actionAreThereAnyDecayedTeethInTheAreaOfPainFragmentToResultFragment(
finalresult = "somethings"
)
- 在 FragmentDest 上使用此参数
arguments.let {
binding.board.text = ResultFragmentArgs.fromBundle(it!!).finalresult
}
在我的例子中,我需要在我的 build.gradle (app)
中添加它
kotlinOptions {
jvmTarget = '1.8'
}
在我的例子中,我输入了以大写字母开头的参数名称
<argument
android:name="MyArgument" // changed it to myArgument fix the problem
app:argType="string"
app:nullable="false" />
我正在做一个小项目并尝试使用新的导航架构组件。当我尝试向目的地添加一些参数时,出现 "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
根据该页面上的文档:
When using the
-ktx
dependencies, Kotlin users can also use the by navArgs() property delegate to access arguments.
确保您遵循 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'
在应用程序中 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 不会在插入依赖项时告诉您库有更新。
最新发布的1.0.0版本似乎已经解决了这个问题。只需将导航依赖项版本更改为 1.0.0
并添加其他答案中提到的 -ktx
依赖项,一切都应该有效。
我通过 Android Studio 的 Build
菜单中的 Clean Project
解决了这个问题。
转到菜单:Build
>> Clean Project
仅供参考,如果你想传递 String
你的 argType 应该是 string
而不是字符串。
app:argType="string"
我遇到了同样的问题,我通过执行以下步骤解决了这个问题
Build -> Clean Project
- 从
nav_graph.xml
文件中删除参数 - 创建新参数
Build -> Rebuild Project
- 设置参数
val action: NavDirections = AreThereAnyDecayedTeethInTheAreaOfPainFragmentDirections
.actionAreThereAnyDecayedTeethInTheAreaOfPainFragmentToResultFragment(
finalresult = "somethings"
)
- 在 FragmentDest 上使用此参数
arguments.let {
binding.board.text = ResultFragmentArgs.fromBundle(it!!).finalresult
}
在我的例子中,我需要在我的 build.gradle (app)
中添加它kotlinOptions {
jvmTarget = '1.8'
}
在我的例子中,我输入了以大写字母开头的参数名称
<argument
android:name="MyArgument" // changed it to myArgument fix the problem
app:argType="string"
app:nullable="false" />