Fixed
Status Update
Comments
da...@google.com <da...@google.com>
il...@google.com <il...@google.com> #2
This has been fixed internally by https://android-review.googlesource.com/864732 and developers can now use by navArgs() in both activities and Fragments to retrieve an instance of their generated Args class.
As a side effect of this change, the Args.fromBundle(Bundle) methods have been replaced with constructors that take a Bundle.
As a side effect of this change, the Args.fromBundle(Bundle) methods have been replaced with constructors that take a Bundle.
ma...@gmail.com <ma...@gmail.com> #3
This will be part of the Navigation 1.0.0-alpha10 release.
ap...@google.com <ap...@google.com> #4
FWIW, the second part of #2, where we switched to a constructor that takes a Bundle, has been reverted in https://android-review.googlesource.com/870691 and we'll continue to use an Args.fromBundle(Bundle) static method in Navigation 1.0.0-alpha10.
il...@google.com <il...@google.com> #5
This is fixed and will be available in 1.0.0-alpha07
Description
Version used: 1.0.0-alpha06
After updating the safe-args plugin from alpha05 to alpha06, my build fails with the following stacktrace:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:generateSafeArgsDebug'
Caused by: java.lang.IllegalStateException: Destination with actions must have name
at androidx.navigation.safe.args.generator.NavWriterKt.generateDirectionsJavaFile(NavWriter.kt:419)
at androidx.navigation.safe.args.generator.NavSafeArgsGeneratorKt$generateSafeArgs$1.invoke(NavSafeArgsGenerator.kt:43)
at androidx.navigation.safe.args.generator.NavSafeArgsGeneratorKt$generateSafeArgs$1.invoke(NavSafeArgsGenerator.kt:55)
at androidx.navigation.safe.args.generator.NavSafeArgsGeneratorKt.generateSafeArgs(NavSafeArgsGenerator.kt:58)
at androidx.navigation.safeargs.gradle.ArgumentsGenerationTask.generateArgs(ArgumentsGenerationTask.kt:54)
at androidx.navigation.safeargs.gradle.ArgumentsGenerationTask.doFullTaskAction(ArgumentsGenerationTask.kt:90)
at androidx.navigation.safeargs.gradle.ArgumentsGenerationTask.taskAction$navigation_safe_args_gradle_plugin(ArgumentsGenerationTask.kt:79)
Reverting to alpha05 makes the build complete.
I think this is related to the commit addressing this issue:
My navigation graph has this structure:
<navigation>
<fragment>
<action />
<argument />
</fragment>
<include app:graph="@navigation/nav_graph_two" />
...
<action />
</navigation>
That is, there are global actions, fragment destinations with arguments, fragment destinations with actions and an included nested graph (in a separate xml). Every single destination has a valid name and every root <navigation> has an id (everything works with version alpha05 of the plugin). I might guess this is related with global actions, which expect the parent destination to have a name that is not resolved with the alpha06 update. In fact, commenting out all the global actions makes the generateSafeArgsDebug task pass. My graphs have ids in the form "@+id/nav_graph_one".