Add routes to NavGraph
This add routes to NavGraph. You can set a route and
startDestinationRoute as an alternative to an id and
startDestinationId.
Passing a blank route of startDestinationRoute is equivalent to passing
0 meaning you can have a NavGraph with a blank route, but you cannot
have a NavGraph with a blank startDestinationRoute.
This change also includes the addition of routes to the NavGraphBuilder
Kotlin DSL
RelNote: "Navigation now supports adding NavGraphs by using a route."
Test: NavGraphTest, NavGraphAndroidTest, NavGraphBuilderTest
Bug: 172823546
Change-Id: I36c68144318ac23785c9178e847b677c0ef1cd8d
diff --git a/navigation/navigation-common/api/restricted_current.txt b/navigation/navigation-common/api/restricted_current.txt
index 1d6eed5..d177c1a 100644
--- a/navigation/navigation-common/api/restricted_current.txt
+++ b/navigation/navigation-common/api/restricted_current.txt
@@ -222,7 +222,7 @@
@androidx.navigation.NavDestinationDsl public class NavDestinationBuilder<D extends androidx.navigation.NavDestination> {
ctor public NavDestinationBuilder(androidx.navigation.Navigator<? extends D> navigator, @IdRes int id);
- ctor public NavDestinationBuilder(androidx.navigation.Navigator<? extends D> navigator, String route);
+ ctor public NavDestinationBuilder(androidx.navigation.Navigator<? extends D> navigator, String? route);
method public final void action(int actionId, kotlin.jvm.functions.Function1<? super androidx.navigation.NavActionBuilder,kotlin.Unit> actionBuilder);
method public final void argument(String name, kotlin.jvm.functions.Function1<? super androidx.navigation.NavArgumentBuilder,kotlin.Unit> argumentBuilder);
method public D build();
@@ -257,16 +257,21 @@
method public final void addDestinations(androidx.navigation.NavDestination... nodes);
method public final void clear();
method public final androidx.navigation.NavDestination? findNode(@IdRes int resid);
+ method public final androidx.navigation.NavDestination? findNode(String? route);
method @Deprecated @IdRes public final int getStartDestination();
method @IdRes public final int getStartDestinationId();
+ method public final String? getStartDestinationRoute();
method public final java.util.Iterator<androidx.navigation.NavDestination> iterator();
method public final void remove(androidx.navigation.NavDestination node);
method public final void setStartDestination(int startDestId);
+ method public final void setStartDestination(String startDestRoute);
property @IdRes public final int startDestinationId;
+ property public final String? startDestinationRoute;
}
@androidx.navigation.NavDestinationDsl public class NavGraphBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.NavGraph> {
ctor public NavGraphBuilder(androidx.navigation.NavigatorProvider provider, @IdRes int id, @IdRes int startDestination);
+ ctor public NavGraphBuilder(androidx.navigation.NavigatorProvider provider, String startDestination, String? route);
method public final void addDestination(androidx.navigation.NavDestination destination);
method public androidx.navigation.NavGraph build();
method public final <D extends androidx.navigation.NavDestination> void destination(androidx.navigation.NavDestinationBuilder<? extends D> navDestination);
@@ -277,12 +282,16 @@
public final class NavGraphBuilderKt {
method public static inline androidx.navigation.NavGraph navigation(androidx.navigation.NavigatorProvider, optional @IdRes int id, @IdRes int startDestination, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+ method public static inline androidx.navigation.NavGraph navigation(androidx.navigation.NavigatorProvider, String startDestination, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
method public static inline void navigation(androidx.navigation.NavGraphBuilder, @IdRes int id, @IdRes int startDestination, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+ method public static inline void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
}
public final class NavGraphKt {
method public static operator boolean contains(androidx.navigation.NavGraph, @IdRes int id);
+ method public static operator boolean contains(androidx.navigation.NavGraph, String route);
method public static inline operator androidx.navigation.NavDestination get(androidx.navigation.NavGraph, @IdRes int id);
+ method public static inline operator androidx.navigation.NavDestination get(androidx.navigation.NavGraph, String route);
method public static inline operator void minusAssign(androidx.navigation.NavGraph, androidx.navigation.NavDestination node);
method public static inline operator void plusAssign(androidx.navigation.NavGraph, androidx.navigation.NavDestination node);
method public static inline operator void plusAssign(androidx.navigation.NavGraph, androidx.navigation.NavGraph other);