David Ibrahim
De la nada, la compilación falla con un extraño error relacionado con el componente de navegación, aunque antes funcionaba, el error está en la clase generada, en mi caso NativeLanguageSelectionFragmentDirections
aquí está el error
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
Y aquí está el código del gráfico de navegación.
<?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>
estoy usando
"androidx.navigation:navigation-fragment-ktx:2.3.5"
"androidx.navigation:navigation-ui-ktx:2.3.5"
También tuve este problema. Hasta que suelten el arreglo. Por favor, intente esto:
plugins {
id("androidx.navigation.safeargs")
}
en vez de
plugins {
id("androidx.navigation.safeargs.kotlin")
}
-
Esta fue una forma rápida de solucionar el mismo problema para mí, gracias. ¿Hay algún inconveniente de usar la versión que no es de Kotlin?
– Martín Gunnarsson
1 de noviembre de 2021 a las 12:38
-
No puede usar argumentos con nombre, por ejemplo.
– peshkirá
16 de noviembre de 2021 a las 10:55
-
¿Cuál es la causa de este problema?… ¿Cuál es la diferencia entre estos dos complementos?
– Venkataramanan
7 de marzo a las 6:59
-
@Venkataramanan, para generar código de lenguaje Java adecuado para Java o módulos mixtos de Java y Kotlin, use androidx.navigation.safeargs, para generar código de Kotlin adecuado para módulos solo de Kotlin, use androidx.navigation.safeargs.kotlin, de aquí
– Yura Shinkarev
4 de mayo a las 8:21
En cuanto a mi caso, también tuve que actualizar el complemento Safe Arg para deshacerme del mensaje de error.
[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'
}
-
Esta solución funciona para mí. Cambiar de “2.3.5” a “2.4.0-alpha04” corrige mi error. Recibí algunas advertencias ⚠ al construir, pero funciona. Gracias
– CuarzoZ
17 de julio de 2021 a las 20:03
-
¡Gracias, ayudó!
– Simonov Dmitry
6 sep 2021 a las 20:29
-
Gracias, me olvidé de actualizar el
nav_version
deandroidx.navigation:navigation-safe-args-gradle-plugin:$nav_version
en el archivo gradle de nivel superior al mismonave_version
que está en el archivo gradle del módulo.– James Bond
19 de diciembre de 2021 a las 11:37
Desde la versión v2.4.0-alfa02 fue lanzado, este error conocido ya no está presente.
Corrección de errores
- Safe Args ya no falla al intentar generar propiedades de dirección en Kotlin. (Id2416, b/188564435)
-
Todavía tienes este error, ¿alguna solución?
– Raunak Verma
6 de julio de 2021 a las 15:11
-
El error debería corregirse en esa versión. Si el problema persiste para usted, coloque su comentario en el rastreador o cree un nuevo problema.
– GoRoS
6 de julio de 2021 a las 17:57
-
Obtuve el mismo error en ‘2.4.0-alpha06’, por lo que no está completamente solucionado o ocurrió alguna regresión
– Michael Tajchert
8 de septiembre de 2021 a las 9:36
-
Suena como un error de regresión, entonces @MichałTajchert, en tal caso, apostaría a que hay un problema existente en el rastreador.
– GoRoS
8 sep 2021 a las 17:50
Todas estas dependencias
androidx.navigation:navigation-fragment-ktx
androidx.navigation:navigation-ui-ktx
androidx.navigation:navigation-safe-args-gradle-plugin
necesita estar usando la misma versión – ej: al momento de escribir esto es 2.4.0-alpha10
imansdn
¡simplemente actualice la dependencia de argumentos seguros a la última versión (> = 2.4.0-rc01) también!:
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.4.0-rc01"
Sana Ebadi
en mi caso, me sale este error para mi nuevo module
. agregué el safe-args classPath
en build.gradle (project)
KOTLIN-DSL:
"classpath"(group = "androidx.navigation",name = "navigation-safe-args-gradle-plugin", version = "2.4.1")
sin sumergirme en mi módulo build.gradle. así que agregué esto encima de build.gradle
:
id("androidx.navigation.safeargs.kotlin")
MARAVILLOSO:
classpath "navigation-safe-args-gradle-plugin : 2.4.1"
y:
id 'androidx.navigation.safeargs.kotlin'
Vladímir Koltunov
2.4.0-beta02 en este momento disponible
¿Intentaste invalidar el caché y reiniciar?
– rey
19 mayo 2021 a las 19:55
Sí, seguro, probé otra versión de Android Studio xD
–David Abraham
19 mayo 2021 a las 19:58
Eso suena como este problema, pero ese problema solo afecta a Navigation 2.4.0-alpha01. ¿Estás seguro de que no estás usando Navigation 2.4.0-alpha01?
– ianhanniballake
19 mayo 2021 a las 20:10
sí, estoy usando la navegación
androidx.navigation:navigation-compose:2.4.0-alpha01
para componer ya que parte del proyecto está escrito en android componer–David Abraham
19 mayo 2021 a las 20:13
incluso después de degradar la dependencia mencionada en mi comentario anterior a
androidx.navigation:navigation-compose:1.0.0-alpha10
sigo enfrentando el mismo problema–David Abraham
20 de mayo de 2021 a las 7:24