Fehler beim Erstellen von Android Studio in der Navigationskomponente, die Aktion ist nicht abstrakt und implementiert keine Aktions-ID des abstrakten Mitglieds

Lesezeit: 5 Minuten

Benutzeravatar von David Ibrahim
David Ibrahim

Aus dem Nichts stürzt der Build mit einem seltsamen Fehler im Zusammenhang mit der Navigationskomponente ab, obwohl er früher funktioniert hat, der Fehler liegt in meinem Fall in der generierten Klasse NativeLanguageSelectionFragmentDirections

Hier ist der Fehler

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

Und hier ist der Code des Navigationsgraphen

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/first_login_graph.xml"
    app:startDestination="@id/nativeLanguageSelectionFragment">

    <fragment
        android:id="@+id/nativeLanguageSelectionFragment"
        android:name="com.linguistic.linguistic.framework.presentation.loginscreens.ui.main.NativeLanguageSelectionFragment"
        android:label="NativeLanguageSelectionFragment"
        tools:layout="@layout/language_selection_fragment">
        <action
            android:id="@+id/goToSelectLearningLangAction"
            app:destination="@id/learningLanguageSelectionFragment"
            app:enterAnim="@anim/slide_in_right"
            app:exitAnim="@anim/slide_out_left"
            app:popEnterAnim="@anim/slide_in_left"
            app:popExitAnim="@anim/slide_out_right"
            app:popUpTo="@id/nativeLanguageSelectionFragment"
            app:popUpToInclusive="true" />
    </fragment>
    <fragment
        android:id="@+id/learningLanguageSelectionFragment"
        android:name="com.linguistic.linguistic.framework.presentation.loginscreens.ui.main.LearningLanguageSelectionFragment"
        android:label="LearningLanguageSelectionFragment"
        tools:layout="@layout/language_selection_fragment">
        <argument
            android:name="nativeLanguageID"
            app:argType="string"
            app:nullable="true" />
        <action
            android:id="@+id/action_learningLanguageSelectionFragment_to_welcomeFragment"
            app:destination="@id/welcomeFragment"
            app:enterAnim="@anim/slide_in_right"
            app:exitAnim="@anim/slide_out_left"
            app:popEnterAnim="@anim/slide_in_left"
            app:popExitAnim="@anim/slide_out_right"
            app:popUpTo="@id/learningLanguageSelectionFragment"
            app:popUpToInclusive="true" />
    </fragment>
    <fragment
        android:id="@+id/welcomeFragment"
        android:name="com.linguistic.linguistic.framework.presentation.loginscreens.ui.main.WelcomeFragment"
        android:label="fragment_welcome"
        tools:layout="@layout/fragment_welcome" />
</navigation>

ich benutze

 "androidx.navigation:navigation-fragment-ktx:2.3.5"
 "androidx.navigation:navigation-ui-ktx:2.3.5"

  • Hast du versucht, den Cache zu deaktivieren und neu zu starten?

    – k

    19. Mai 2021 um 19:55 Uhr

  • Ja, sicher, ich habe eine andere Android-Studio-Version xD ausprobiert

    – David Ibrahim

    19. Mai 2021 um 19:58 Uhr


  • Das hört sich an, wie dieses Problem, aber dieses Problem betrifft nur Navigation 2.4.0-alpha01. Sind Sie sicher, dass Sie nicht Navigation 2.4.0-alpha01 verwenden?

    – ianhanniballake

    19. Mai 2021 um 20:10 Uhr

  • Ja, ich benutze die Navigation androidx.navigation:navigation-compose:2.4.0-alpha01 for compose, da ein Teil des Projekts in Android compose geschrieben ist

    – David Ibrahim

    19. Mai 2021 um 20:13 Uhr

  • auch nach Herabstufung der in meinem vorherigen Kommentar erwähnten Abhängigkeit zu androidx.navigation:navigation-compose:1.0.0-alpha10ich stehe immer noch vor dem gleichen Problem

    – David Ibrahim

    20. Mai 2021 um 7:24 Uhr

Ich hatte dieses Problem auch. Bis sie den Fix freigeben. Bitte versuchen Sie Folgendes:

plugins {
  id("androidx.navigation.safeargs")
}

Anstatt von

plugins {
  id("androidx.navigation.safeargs.kotlin")
}

  • Dies war eine schnelle Möglichkeit, das gleiche Problem für mich zu umgehen, danke. Gibt es Nachteile bei der Verwendung der Nicht-Kotlin-Version?

    – Martin Gunnarson

    1. November 2021 um 12:38 Uhr

  • Sie können beispielsweise keine benannten Argumente verwenden.

    – Peschkira

    16. November 2021 um 10:55 Uhr

  • Was ist die Ursache dieses Problems?… Was ist der Unterschied zwischen diesen beiden Plugins

    – Venkataramanan

    7. März um 6:59

  • @Venkataramanan, um Java-Sprachcode zu generieren, der für Java oder gemischte Java- und Kotlin-Module geeignet ist, verwenden Sie androidx.navigation.safeargs, um Kotlin-Code zu generieren, der für Nur-Kotlin-Module geeignet ist, verwenden Sie androidx.navigation.safeargs.kotlin, from hier

    – Yura Shinkarev

    4. Mai um 8:21 Uhr

In meinem Fall musste ich auch das Safe Arg-Plugin aktualisieren, um die Fehlermeldung loszuwerden.

[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'
}

  • Diese Lösung funktioniert für mich. Der Wechsel von “2.3.5” zu “2.4.0-alpha04” behebt meinen Fehler. Habe beim Bauen einige Warnungen ⚠ bekommen, funktioniert aber. Vielen Dank

    – QuartZ

    17. Juli 2021 um 20:03 Uhr

  • Danke, ich habe nur vergessen zu aktualisieren nav_version von androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version in der Gradle-Datei der obersten Ebene auf dasselbe nave_version die sich in der Gradle-Datei des Moduls befindet.

    – James Bond

    19. Dezember 2021 um 11:37 Uhr

Seit der Fassung v2.4.0-alpha02 veröffentlicht wurde, ist dieser bekannte Fehler nicht mehr vorhanden.

Fehlerbehebung

  • Safe Args stürzt nicht mehr ab, wenn versucht wird, Richtungseigenschaften in Kotlin zu generieren. (ID2416, b/188564435)

  • Besteht dieser Fehler immer noch, gibt es eine Lösung?

    – Raunak Verma

    6. Juli 2021 um 15:11 Uhr

  • Der Fehler sollte mit dieser Version behoben sein. Wenn das Problem für Sie weiterhin besteht, geben Sie Ihren Kommentar im Tracker ab oder erstellen Sie ein neues Problem.

    – GoRoS

    6. Juli 2021 um 17:57 Uhr

  • Habe denselben Fehler auf ‘2.4.0-alpha06’, also ist er nicht vollständig behoben oder es ist eine Regression aufgetreten

    – Michal Tajchert

    8. September 2021 um 9:36 Uhr

  • Klingt nach einem Regressionsfehler @MichałTajchert, in diesem Fall würde ich wetten, dass es ein bestehendes Problem mit dem Tracker gibt.

    – GoRoS

    8. September 2021 um 17:50 Uhr

All diese Abhängigkeiten

androidx.navigation:navigation-fragment-ktx
androidx.navigation:navigation-ui-ktx
androidx.navigation:navigation-safe-args-gradle-plugin

müssen dieselbe Version verwenden – z. B.: Zum Zeitpunkt des Schreibens ist dies der Fall 2.4.0-alpha10

Benutzeravatar von imansdn
imansdn

aktualisiere einfach auch die Safe-Args-Abhängigkeit auf die neueste Version (>=2.4.0-rc01)!:

classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.4.0-rc01"

Benutzeravatar von Sana Ebadi
Sana Ebadi

In meinem Fall bekomme ich diesen Fehler für meine neue module. Ich habe die hinzugefügt safe-args classPath in build.gradle (project)

KOTLIN-DSL:

    "classpath"(group = "androidx.navigation",name = "navigation-safe-args-gradle-plugin", version = "2.4.1")

ohne das Eintauchen in mein Modul build.gradle. also habe ich das oben drauf gesetzt build.gradle:

id("androidx.navigation.safeargs.kotlin")

GROSSARTIG:

classpath  "navigation-safe-args-gradle-plugin : 2.4.1"

und:

id 'androidx.navigation.safeargs.kotlin'

Benutzeravatar von Vladimir Koltunov
Wladimir Koltunow

2.4.0-beta02 derzeit verfügbar

1395190cookie-checkFehler beim Erstellen von Android Studio in der Navigationskomponente, die Aktion ist nicht abstrakt und implementiert keine Aktions-ID des abstrakten Mitglieds

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy