Fixed
Status Update
Comments
il...@google.com <il...@google.com> #2
We also need documentation with a few examples for it.
[Deleted User] <[Deleted User]> #3
Any progress with the documentation?
[Deleted User] <[Deleted User]> #4
Changelists related to this issue will be linked once they are submitted.
il...@google.com <il...@google.com> #5
Project: platform/frameworks/support
Branch: androidx-master-dev
commit dc23f5c30d0394593e16a594c1502059f7e11140
Author: Ben Weiss <benweiss@google.com>
Date: Mon Mar 09 13:08:13 2020
Kotlin DSL for navigation-dynamic-features-*
Test: check & connectedCheck of affected modules
Bug: 148969800
Change-Id: Icd0cb16fbe7035aca6638c5fb984f27b6eb1ee0c
M navigation/navigation-dynamic-features-fragment/api/2.3.0-alpha04.txt
M navigation/navigation-dynamic-features-fragment/api/current.txt
M navigation/navigation-dynamic-features-fragment/api/public_plus_experimental_2.3.0-alpha04.txt
M navigation/navigation-dynamic-features-fragment/api/public_plus_experimental_current.txt
M navigation/navigation-dynamic-features-fragment/api/restricted_2.3.0-alpha04.txt
M navigation/navigation-dynamic-features-fragment/api/restricted_current.txt
M navigation/navigation-dynamic-features-fragment/src/androidTest/AndroidManifest.xml
A navigation/navigation-dynamic-features-fragment/src/androidTest/java/androidx/navigation/dynamicfeatures/fragment/DynamicFragmentNavigatorDestinationBuilderTest.kt
A navigation/navigation-dynamic-features-fragment/src/main/java/androidx/navigation/dynamicfeatures/fragment/DynamicFragmentNavigatorDestinationBuilder.kt
M navigation/navigation-dynamic-features-runtime/api/2.3.0-alpha04.txt
M navigation/navigation-dynamic-features-runtime/api/current.txt
M navigation/navigation-dynamic-features-runtime/api/public_plus_experimental_2.3.0-alpha04.txt
M navigation/navigation-dynamic-features-runtime/api/public_plus_experimental_current.txt
M navigation/navigation-dynamic-features-runtime/api/restricted_2.3.0-alpha04.txt
M navigation/navigation-dynamic-features-runtime/api/restricted_current.txt
A navigation/navigation-dynamic-features-runtime/src/androidTest/java/androidx/navigation/dynamicfeatures/DynamicActivityNavigatorDestinationBuilderTest.kt
M navigation/navigation-dynamic-features-runtime/src/main/java/androidx/navigation/dynamicfeatures/DynamicActivityNavigator.kt
A navigation/navigation-dynamic-features-runtime/src/main/java/androidx/navigation/dynamicfeatures/DynamicActivityNavigatorDestinationBuilder.kt
https://android-review.googlesource.com/1253672
Branch: androidx-master-dev
commit dc23f5c30d0394593e16a594c1502059f7e11140
Author: Ben Weiss <benweiss@google.com>
Date: Mon Mar 09 13:08:13 2020
Kotlin DSL for navigation-dynamic-features-*
Test: check & connectedCheck of affected modules
Bug: 148969800
Change-Id: Icd0cb16fbe7035aca6638c5fb984f27b6eb1ee0c
M navigation/navigation-dynamic-features-fragment/api/2.3.0-alpha04.txt
M navigation/navigation-dynamic-features-fragment/api/current.txt
M navigation/navigation-dynamic-features-fragment/api/public_plus_experimental_2.3.0-alpha04.txt
M navigation/navigation-dynamic-features-fragment/api/public_plus_experimental_current.txt
M navigation/navigation-dynamic-features-fragment/api/restricted_2.3.0-alpha04.txt
M navigation/navigation-dynamic-features-fragment/api/restricted_current.txt
M navigation/navigation-dynamic-features-fragment/src/androidTest/AndroidManifest.xml
A navigation/navigation-dynamic-features-fragment/src/androidTest/java/androidx/navigation/dynamicfeatures/fragment/DynamicFragmentNavigatorDestinationBuilderTest.kt
A navigation/navigation-dynamic-features-fragment/src/main/java/androidx/navigation/dynamicfeatures/fragment/DynamicFragmentNavigatorDestinationBuilder.kt
M navigation/navigation-dynamic-features-runtime/api/2.3.0-alpha04.txt
M navigation/navigation-dynamic-features-runtime/api/current.txt
M navigation/navigation-dynamic-features-runtime/api/public_plus_experimental_2.3.0-alpha04.txt
M navigation/navigation-dynamic-features-runtime/api/public_plus_experimental_current.txt
M navigation/navigation-dynamic-features-runtime/api/restricted_2.3.0-alpha04.txt
M navigation/navigation-dynamic-features-runtime/api/restricted_current.txt
A navigation/navigation-dynamic-features-runtime/src/androidTest/java/androidx/navigation/dynamicfeatures/DynamicActivityNavigatorDestinationBuilderTest.kt
M navigation/navigation-dynamic-features-runtime/src/main/java/androidx/navigation/dynamicfeatures/DynamicActivityNavigator.kt
A navigation/navigation-dynamic-features-runtime/src/main/java/androidx/navigation/dynamicfeatures/DynamicActivityNavigatorDestinationBuilder.kt
ap...@google.com <ap...@google.com> #6
Integration into the Kotlin DSL for dynamic feature <activity>
and <fragment>
destinations is complete internally and will be available in Navigation 2.3.0-alpha04
.
Still to do:
- Support for
DynamicNavGraph
(i.e.,<navigation>
elements) with amoduleName
in the DSL - Support for something like
<dynamic-include>
(<include>
isn't necessary in the Kotlin DSL since you'd just callnavInflater.inflate()
yourself, but for dynamic navigation you would need some equivalent to callnavInflater.inflate()
after the module is downloaded)
We're tracking the Kotlin DSL documentation separately from this in an internal bug; it is not tied to any specific Navigation release.
jb...@google.com <jb...@google.com> #7
Project: platform/frameworks/support
Branch: androidx-master-dev
commit c42b100d8e7180204009ec0a92b6ff45a0e26b17
Author: Ben Weiss <benweiss@google.com>
Date: Wed Apr 08 22:17:18 2020
Add DSL for DynamicNavGraph
Bug: 148969800
Test: connectedCheck
Change-Id: Ieb206b2f8ea0daddac84f5297edb533a649249f2
M navigation/navigation-common-ktx/api/2.3.0-alpha05.txt
M navigation/navigation-common-ktx/api/current.txt
M navigation/navigation-common-ktx/api/public_plus_experimental_2.3.0-alpha05.txt
M navigation/navigation-common-ktx/api/public_plus_experimental_current.txt
M navigation/navigation-common-ktx/api/restricted_2.3.0-alpha05.txt
M navigation/navigation-common-ktx/api/restricted_current.txt
M navigation/navigation-common-ktx/src/main/java/androidx/navigation/NavGraphBuilder.kt
M navigation/navigation-dynamic-features-runtime/api/2.3.0-alpha05.txt
M navigation/navigation-dynamic-features-runtime/api/current.txt
M navigation/navigation-dynamic-features-runtime/api/public_plus_experimental_2.3.0-alpha05.txt
M navigation/navigation-dynamic-features-runtime/api/public_plus_experimental_current.txt
M navigation/navigation-dynamic-features-runtime/api/restricted_2.3.0-alpha05.txt
M navigation/navigation-dynamic-features-runtime/api/restricted_current.txt
A navigation/navigation-dynamic-features-runtime/src/androidTest/java/androidx/navigation/dynamicfeatures/DynamicNavGraphBuilderTest.kt
A navigation/navigation-dynamic-features-runtime/src/main/java/androidx/navigation/dynamicfeatures/DynamicNavGraphBuilder.kt
https://android-review.googlesource.com/1282383
Branch: androidx-master-dev
commit c42b100d8e7180204009ec0a92b6ff45a0e26b17
Author: Ben Weiss <benweiss@google.com>
Date: Wed Apr 08 22:17:18 2020
Add DSL for DynamicNavGraph
Bug: 148969800
Test: connectedCheck
Change-Id: Ieb206b2f8ea0daddac84f5297edb533a649249f2
M navigation/navigation-common-ktx/api/2.3.0-alpha05.txt
M navigation/navigation-common-ktx/api/current.txt
M navigation/navigation-common-ktx/api/public_plus_experimental_2.3.0-alpha05.txt
M navigation/navigation-common-ktx/api/public_plus_experimental_current.txt
M navigation/navigation-common-ktx/api/restricted_2.3.0-alpha05.txt
M navigation/navigation-common-ktx/api/restricted_current.txt
M navigation/navigation-common-ktx/src/main/java/androidx/navigation/NavGraphBuilder.kt
M navigation/navigation-dynamic-features-runtime/api/2.3.0-alpha05.txt
M navigation/navigation-dynamic-features-runtime/api/current.txt
M navigation/navigation-dynamic-features-runtime/api/public_plus_experimental_2.3.0-alpha05.txt
M navigation/navigation-dynamic-features-runtime/api/public_plus_experimental_current.txt
M navigation/navigation-dynamic-features-runtime/api/restricted_2.3.0-alpha05.txt
M navigation/navigation-dynamic-features-runtime/api/restricted_current.txt
A navigation/navigation-dynamic-features-runtime/src/androidTest/java/androidx/navigation/dynamicfeatures/DynamicNavGraphBuilderTest.kt
A navigation/navigation-dynamic-features-runtime/src/main/java/androidx/navigation/dynamicfeatures/DynamicNavGraphBuilder.kt
ra...@gmail.com <ra...@gmail.com> #8
Project: platform/frameworks/support
Branch: androidx-master-dev
commit d19e5f34470f9d079887149202930c747b8c165e
Author: Ben Weiss <benweiss@google.com>
Date: Wed Apr 22 21:55:28 2020
Create DynamicNavGraphs from NavController
Add extension to NavController and NavHost for creation
of DynamicNavGraphs in Kotlin DSL.
Bug: 148969800
Test: gw cAT
Change-Id: I4c3870f29707afc3fba13323d103fe2f22b64b4a
M navigation/navigation-dynamic-features-fragment/src/androidTest/java/androidx/navigation/dynamicfeatures/fragment/DynamicFragmentNavigatorDestinationBuilderTest.kt
M navigation/navigation-dynamic-features-runtime/api/2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-runtime/api/current.txt
M navigation/navigation-dynamic-features-runtime/api/public_plus_experimental_2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-runtime/api/public_plus_experimental_current.txt
M navigation/navigation-dynamic-features-runtime/api/restricted_2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-runtime/api/restricted_current.txt
M navigation/navigation-dynamic-features-runtime/src/androidTest/java/androidx/navigation/dynamicfeatures/DynamicActivityNavigatorDestinationBuilderTest.kt
A navigation/navigation-dynamic-features-runtime/src/main/java/androidx/navigation/dynamicfeatures/NavController.kt
A navigation/navigation-dynamic-features-runtime/src/main/java/androidx/navigation/dynamicfeatures/NavHost.kt
https://android-review.googlesource.com/1293555
Branch: androidx-master-dev
commit d19e5f34470f9d079887149202930c747b8c165e
Author: Ben Weiss <benweiss@google.com>
Date: Wed Apr 22 21:55:28 2020
Create DynamicNavGraphs from NavController
Add extension to NavController and NavHost for creation
of DynamicNavGraphs in Kotlin DSL.
Bug: 148969800
Test: gw cAT
Change-Id: I4c3870f29707afc3fba13323d103fe2f22b64b4a
M navigation/navigation-dynamic-features-fragment/src/androidTest/java/androidx/navigation/dynamicfeatures/fragment/DynamicFragmentNavigatorDestinationBuilderTest.kt
M navigation/navigation-dynamic-features-runtime/api/2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-runtime/api/current.txt
M navigation/navigation-dynamic-features-runtime/api/public_plus_experimental_2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-runtime/api/public_plus_experimental_current.txt
M navigation/navigation-dynamic-features-runtime/api/restricted_2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-runtime/api/restricted_current.txt
M navigation/navigation-dynamic-features-runtime/src/androidTest/java/androidx/navigation/dynamicfeatures/DynamicActivityNavigatorDestinationBuilderTest.kt
A navigation/navigation-dynamic-features-runtime/src/main/java/androidx/navigation/dynamicfeatures/NavController.kt
A navigation/navigation-dynamic-features-runtime/src/main/java/androidx/navigation/dynamicfeatures/NavHost.kt
jb...@google.com <jb...@google.com> #9
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 3c0404251aeb98801b422072f86127739fa59f60
Author: Ben Weiss <benweiss@google.com>
Date: Wed Apr 22 21:54:02 2020
Add reified fragment for dynamic fragments
Bug: 148969800
Test: gw cAT
Change-Id: Ie03d9ed0b21b854d6595c0208ce23a4c13294273
M navigation/navigation-dynamic-features-fragment/api/2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-fragment/api/current.txt
M navigation/navigation-dynamic-features-fragment/api/public_plus_experimental_2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-fragment/api/public_plus_experimental_current.txt
M navigation/navigation-dynamic-features-fragment/api/restricted_2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-fragment/api/restricted_current.txt
M navigation/navigation-dynamic-features-fragment/src/androidTest/java/androidx/navigation/dynamicfeatures/fragment/DynamicFragmentNavigatorDestinationBuilderTest.kt
M navigation/navigation-dynamic-features-fragment/src/main/java/androidx/navigation/dynamicfeatures/fragment/DynamicFragmentNavigatorDestinationBuilder.kt
https://android-review.googlesource.com/1293554
Branch: androidx-master-dev
commit 3c0404251aeb98801b422072f86127739fa59f60
Author: Ben Weiss <benweiss@google.com>
Date: Wed Apr 22 21:54:02 2020
Add reified fragment for dynamic fragments
Bug: 148969800
Test: gw cAT
Change-Id: Ie03d9ed0b21b854d6595c0208ce23a4c13294273
M navigation/navigation-dynamic-features-fragment/api/2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-fragment/api/current.txt
M navigation/navigation-dynamic-features-fragment/api/public_plus_experimental_2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-fragment/api/public_plus_experimental_current.txt
M navigation/navigation-dynamic-features-fragment/api/restricted_2.3.0-alpha06.txt
M navigation/navigation-dynamic-features-fragment/api/restricted_current.txt
M navigation/navigation-dynamic-features-fragment/src/androidTest/java/androidx/navigation/dynamicfeatures/fragment/DynamicFragmentNavigatorDestinationBuilderTest.kt
M navigation/navigation-dynamic-features-fragment/src/main/java/androidx/navigation/dynamicfeatures/fragment/DynamicFragmentNavigatorDestinationBuilder.kt
Description
Version used: 2.0.0
Devices/Android versions reproduced on: during development; any IDE
SDK: Java
Summary:
I can't unit test any production code that tries navigating to an auto-generated Action class that has a default value. It seems (in version 2.0.0) that the default values are set by the NavController instead of baked into the auto-generated class. The result is that I get some NullPointerExceptions when trying to unit test navigation.
To reproduce:
1. In nav graph xml, add an argument having a default value to an action
<fragment
android:id="@id/screen1_fragment"
android:name="com.yourapp.yourpackage.Screen1Fragment"
<action
android:id="@+id/action_screen1_to_screen2"
app:destination="@id/screen2_fragment"
<argument
android:name="myBoolean"
app:argType="boolean"
android:defaultValue="false" />
</action>
</fragment>
2. In prod code, navigate using this action without overriding the default
NavController.navigate(Screen1FragmentDirections.actionScreen1ToScreen2());
3. In a unit test, try to verify that the screen1-to-screen2 navigation was invoked
verify(NavController).navigate(Screen1FragmentDirections.actionScreen1ToScreen2());
Expected: Unit test passes with flying colors
Actual: NullPointerException is thrown when the verify() does an equals() comparison. The auto-generated class does not contain default values, and so ActionScreen1ToScreen2.getMyBoolean() method attempts to cast a null value into a boolean, like so:
public boolean getMyBoolean() {
return (boolean) arguments.get("myBoolean");
}
Seems like a testability issue. If there's something I'm missing please let me know.
Related Issues (but not the same):
* SafeArg Builder classes doesn't contain the default values (