Tho*_*art 16 navigation android android-architecture-components android-safe-args
我正在做一个小项目并尝试使用新的导航架构组件。当我尝试向目的地添加一些参数时,出现“未解析的引用: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
Run Code Online (Sandbox Code Playgroud)
Hus*_*hmy 18
就我而言,我输入了以大写字母开头的参数名称
<argument
android:name="MyArgument" // changed it to myArgument fix the problem
app:argType="string"
app:nullable="false" />
Run Code Online (Sandbox Code Playgroud)
小智 11
我有同样的问题,我通过执行以下步骤解决了这个问题
Build -> Clean Project
nav_graph.xml
从文件中删除参数Build -> Rebuild Project
val action: NavDirections = AreThereAnyDecayedTeethInTheAreaOfPainFragmentDirections
.actionAreThereAnyDecayedTeethInTheAreaOfPainFragmentToResultFragment(
finalresult = "somethings"
)
Run Code Online (Sandbox Code Playgroud)
arguments.let {
binding.board.text = ResultFragmentArgs.fromBundle(it!!).finalresult
}
Run Code Online (Sandbox Code Playgroud)
根据该页面上的文档:
使用
-ktx
依赖项时,Kotlin 用户还可以使用 by navArgs() 属性委托来访问参数。
确保您遵循添加组件文档并使用navigation-fragment-ktx
依赖项:
implementation "android.arch.navigation:navigation-fragment-ktx:1.0.0-alpha11"
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,直到我意识到导航组件的项目依赖项使用的版本与插件(在类路径中)指定的版本不同。
即在项目的build.gradle
classpath 'android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-beta01'
Run Code Online (Sandbox Code Playgroud)
在应用程序build.gradle 中
// Navigation
implementation 'android.arch.navigation:navigation-fragment-ktx:'+ rootProject.navigationVersion
implementation 'android.arch.navigation:navigation-ui-ktx:' + rootProject.navigationVersion
Run Code Online (Sandbox Code Playgroud)
导航版本在哪里
ext {
...
navigationVersion = "1.0.0-alpha08"
}
Run Code Online (Sandbox Code Playgroud)
lint 不会告诉您在插入依赖项时对库进行了更新。