未解析的参考:将一些参数添加到目的地后的 NavArgs

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

我有同样的问题,我通过执行以下步骤解决了这个问题

  1. Build -> Clean Project
  2. nav_graph.xml从文件中删除参数
  3. 创造新论点
  4. Build -> Rebuild Project
  5. 设置参数
val action: NavDirections = AreThereAnyDecayedTeethInTheAreaOfPainFragmentDirections
                .actionAreThereAnyDecayedTeethInTheAreaOfPainFragmentToResultFragment(
                    finalresult = "somethings"
                )
Run Code Online (Sandbox Code Playgroud)
  1. 在 FragmentDest 上使用此参数
        arguments.let {
            binding.board.text = ResultFragmentArgs.fromBundle(it!!).finalresult
        }
Run Code Online (Sandbox Code Playgroud)


ian*_*ake 9

根据该页面上的文档:

使用-ktx依赖项时,Kotlin 用户还可以使用 by navArgs() 属性委托来访问参数。

确保您遵循添加组件文档并使用navigation-fragment-ktx依赖项:

implementation "android.arch.navigation:navigation-fragment-ktx:1.0.0-alpha11"
Run Code Online (Sandbox Code Playgroud)


woo*_*etm 5

我遇到了同样的问题,直到我意识到导航组件的项目依赖项使用的版本与插件(在类路径中)指定的版本不同。

即在项目的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 不会告诉您在插入依赖项时对库进行了更新。