Android studio build 导航组件出错,action 不是抽象的,也没有实现抽象的成员 actionID

Dav*_*him 14 android android-jetpack-navigation

不知何故,构建崩溃了,并出现了与导航组件相关的奇怪错误,尽管它以前可以工作,但错误出在生成的类中,就我而言 NativeLanguageSelectionFragmentDirections

这是错误

e: C:\Users\David\StudioProjects\android\app\build\generated\source\navigation-args\debug\com\linguistic\linguistic\framework\presentation\loginscreens\ui\main\NativeLanguageSelectionFragmentDirections.kt: (10, 16): Class 'GoToSelectLearningLangAction' is not abstract and does not implement abstract member public abstract val actionId: Int defined in androidx.navigation.NavDirections
e: C:\Users\David\StudioProjects\android\app\build\generated\source\navigation-args\debug\com\linguistic\linguistic\framework\presentation\loginscreens\ui\main\NativeLanguageSelectionFragmentDirections.kt: (13, 12): 'getActionId' overrides nothing
e: C:\Users\David\StudioProjects\android\app\build\generated\source\navigation-args\debug\com\linguistic\linguistic\framework\presentation\loginscreens\ui\main\NativeLanguageSelectionFragmentDirections.kt: (15, 12): 'getArguments' overrides nothing
Run Code Online (Sandbox Code Playgroud)

这是导航图的代码

e: C:\Users\David\StudioProjects\android\app\build\generated\source\navigation-args\debug\com\linguistic\linguistic\framework\presentation\loginscreens\ui\main\NativeLanguageSelectionFragmentDirections.kt: (10, 16): Class 'GoToSelectLearningLangAction' is not abstract and does not implement abstract member public abstract val actionId: Int defined in androidx.navigation.NavDirections
e: C:\Users\David\StudioProjects\android\app\build\generated\source\navigation-args\debug\com\linguistic\linguistic\framework\presentation\loginscreens\ui\main\NativeLanguageSelectionFragmentDirections.kt: (13, 12): 'getActionId' overrides nothing
e: C:\Users\David\StudioProjects\android\app\build\generated\source\navigation-args\debug\com\linguistic\linguistic\framework\presentation\loginscreens\ui\main\NativeLanguageSelectionFragmentDirections.kt: (15, 12): 'getArguments' overrides nothing
Run Code Online (Sandbox Code Playgroud)

我在用

 "androidx.navigation:navigation-fragment-ktx:2.3.5"
 "androidx.navigation:navigation-ui-ktx:2.3.5"
Run Code Online (Sandbox Code Playgroud)

sol*_*our 41

就我而言,我还必须更新 Safe Arg 插件才能消除错误消息。

[build.gradle]
buildscript {
    ...
    dependencies {
        ...
        classpath 'androidx.navigation:navigation-safe-args-gradle-plugin:2.4.0-alpha04'
}

[app/build.gradle]
dependencies {
    ...
    implementation 'androidx.fragment:fragment-ktx:1.4.0-alpha04'
    api 'androidx.navigation:navigation-fragment-ktx:2.4.0-alpha04'
    api 'androidx.navigation:navigation-ui-ktx:2.4.0-alpha04'
}
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案对我有用。从“2.3.5”更改为“2.4.0-alpha04”修复了我的错误。构建时收到一些警告⚠,但有效。谢谢 (3认同)
  • 谢谢,我只是忘记将顶级 gradle 文件中的 `androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version` 的 `nav_version` 更新为模块 gradle 文件中相同的 `nave_version` 。 (2认同)

Rez*_*eza 14

我也有这个问题。直到他们发布修复程序。请试试这个:

plugins {
  id("androidx.navigation.safeargs")
}
Run Code Online (Sandbox Code Playgroud)

代替

plugins {
  id("androidx.navigation.safeargs.kotlin")
}
Run Code Online (Sandbox Code Playgroud)

  • 例如,您不能使用命名参数。 (7认同)
  • 这个问题的原因是什么?...这两个插件有什么区别 (2认同)

小智 13

所有这些依赖项

androidx.navigation:navigation-fragment-ktx
androidx.navigation:navigation-ui-ktx
androidx.navigation:navigation-safe-args-gradle-plugin
Run Code Online (Sandbox Code Playgroud)

需要使用相同的版本 - 例如:在撰写本文时,它是2.4.0-alpha10


GoR*_*RoS 7

由于版本v2.4.0-alpha02已发布,此已知错误不再存在。

Bug修复

  • 尝试在 Kotlin 中生成方向属性时,Safe Args 不再崩溃。( Id2416 , b/188564435 )