NavGraph

public class NavGraph extends NavDestination

Object
   ↳ NavDestination
     ↳ NavGraph

NavGraph is a collection of NavDestination nodes fetchable by ID.

A NavGraph serves as a 'virtual' destination: while the NavGraph itself will not appear on the back stack, navigating to the NavGraph will cause the starting destination to be added to the back stack.

Construct a new NavGraph. This NavGraph is not valid until you add a destination and set the starting destination.

Summary

Nested types

NavGraph.Companion

Public fields

final @NonNull Map<@NonNull String, @NonNull NavArgument>

The arguments supported by this destination.

final int

The destination's unique ID.

final @Nullable CharSequence

The descriptive label of this destination.

final @NonNull String

The name associated with this destination's Navigator.

final @NonNull SparseArrayCompat<@NonNull NavDestination>
final @Nullable NavGraph

Gets the NavGraph that contains this destination.

final @Nullable String

The destination's unique route.

final @NonNull String
final int

The starting destination id for this NavGraph.

final @Nullable String

The route for the starting destination for this NavGraph.

Public constructors

NavGraph(@NonNull Navigator<@NonNull NavGraph> navGraphNavigator)

Public methods

final void

Add all destinations from another collection to this one.

final void

Adds a destination to this NavGraph.

final void

Adds multiple destinations to this NavGraph.

final void

Adds multiple destinations to this NavGraph.

final void

Clear all destinations from this navigation graph.

boolean
final @Nullable NavDestination
findNode(@IdRes int resId)

Finds a destination in the collection by ID.

final @Nullable NavDestination

Finds a destination in the collection by route.

final @IdRes int

This method is deprecated. Use getStartDestinationId instead.

int
final @NonNull Iterator<@NonNull NavDestination>
void

Called when inflating a destination from a resource.

final void

Remove a given destination from this NavGraph

final void
setStartDestination(int startDestId)

Sets the starting destination for this NavGraph.

final void

Sets the starting destination for this NavGraph.

@NonNull String

Extension functions

final boolean
NavGraphKt.contains(@NonNull NavGraph receiver, @IdRes int id)

Returns true if a destination with id is found in this navigation graph.

final boolean

Returns true if a destination with route is found in this navigation graph.

final @NonNull NavDestination
NavGraphKt.get(@NonNull NavGraph receiver, @IdRes int id)

Returns the destination with id.

final @NonNull NavDestination

Returns the destination with route.

final void
NavGraphKt.minusAssign(
    @NonNull NavGraph receiver,
    @NonNull NavDestination node
)

Removes node from this navigation graph.

final void
NavGraphKt.plusAssign(
    @NonNull NavGraph receiver,
    @NonNull NavDestination node
)

Adds a destination to this NavGraph.

final void

Add all destinations from another collection to this one.

Inherited methods

From class Iterable
From class NavDestination
final void
addArgument(@NonNull String argumentName, @NonNull NavArgument argument)

Sets an argument type for an argument name

final void

Add a deep link to this destination.

final void
addDeepLink(@NonNull String uriPattern)

Add a deep link to this destination.

final @Nullable NavAction
getAction(@IdRes int id)

Returns the NavAction for the given action ID.

boolean
hasDeepLink(@NonNull Uri deepLink)

Checks the given deep link Uri, and determines whether it matches a Uri pattern added to the destination by a call to addDeepLink .

boolean

Checks the given NavDeepLinkRequest, and determines whether it matches a NavDeepLink added to the destination by a call to addDeepLink.

final void
putAction(@IdRes int actionId, @NonNull NavAction action)

Sets the NavAction destination for an action ID.

final void
putAction(@IdRes int actionId, @IdRes int destId)

Creates a NavAction for the given destId and associates it with the actionId.

final void
removeAction(@IdRes int actionId)

Unsets the NavAction for an action ID.

final void
removeArgument(@NonNull String argumentName)

Unsets the argument type for an argument name.

Public fields

arguments

@NonNull
public final @NonNull Map<@NonNull String, @NonNull NavArgumentarguments

The arguments supported by this destination. Returns a read-only map of argument names to NavArgument objects that can be used to check the type, default value and nullability of the argument.

To add and remove arguments for this NavDestination use addArgument and removeArgument.

Returns
@NonNull Map<@NonNull String, @NonNull NavArgument>

Read-only map of argument names to arguments.

id

@NonNull
public final int id

The destination's unique ID. This should be an ID resource generated by the Android resource system.

label

@Nullable
public final @Nullable CharSequence label

The descriptive label of this destination.

@NonNull
public final @NonNull String navigatorName

The name associated with this destination's Navigator.

parent

@Nullable
public final @Nullable NavGraph parent

Gets the NavGraph that contains this destination. This will be set when a destination is added to a NavGraph via NavGraph.addDestination.

route

@Nullable
public final @Nullable String route

The destination's unique route. Setting this will also update the id of the destinations so custom destination ids should only be set after setting the route.

Returns
@Nullable String

this destination's route, or null if no route is set

Throws
kotlin.IllegalArgumentException

is the given route is empty

startDestDisplayName

@NonNull
public final @NonNull String startDestDisplayName

startDestinationId

@NonNull
public final int startDestinationId

The starting destination id for this NavGraph. When navigating to the NavGraph, the destination represented by this id is the one the user will initially see.

startDestinationRoute

@Nullable
public final @Nullable String startDestinationRoute

The route for the starting destination for this NavGraph. When navigating to the NavGraph, the destination represented by this route is the one the user will initially see.

Public constructors

public final NavGraph(@NonNull Navigator<@NonNull NavGraph> navGraphNavigator)
Parameters
@NonNull Navigator<@NonNull NavGraph> navGraphNavigator

The NavGraphNavigator which this destination will be associated with. Generally retrieved via a NavController'sNavigatorProvider.getNavigator method.

Public methods

addAll

@NonNull
public final void addAll(@NonNull NavGraph other)

Add all destinations from another collection to this one. As each destination has at most one parent, the destinations will be removed from the given NavGraph.

Parameters
@NonNull NavGraph other

collection of destinations to add. All destinations will be removed from this graph after being added to this graph.

addDestination

@NonNull
public final void addDestination(@NonNull NavDestination node)

Adds a destination to this NavGraph. The destination must have an NavDestination.id id} set.

The destination must not have a parent set. If the destination is already part of a navigation graph, call remove before calling this method.

Parameters
@NonNull NavDestination node

destination to add

Throws
kotlin.IllegalArgumentException

if destination does not have an id, the destination has the same id as the graph, or the destination already has a parent.

addDestinations

@NonNull
public final void addDestinations(@NonNull Collection<@NonNull NavDestination> nodes)

Adds multiple destinations to this NavGraph. Each destination must have an NavDestination.id id} set.

Each destination must not have a parent set. If any destination is already part of a navigation graph, call remove before calling this method.

Parameters
@NonNull Collection<@NonNull NavDestination> nodes

destinations to add

addDestinations

@NonNull
public final void addDestinations(@NonNull NavDestination nodes)

Adds multiple destinations to this NavGraph. Each destination must have an NavDestination.id id} set.

Each destination must not have a parent set. If any destination is already part of a navigation graph, call remove before calling this method.

Parameters
@NonNull NavDestination nodes

destinations to add

clear

@NonNull
public final void clear()

Clear all destinations from this navigation graph.

equals

@NonNull
public boolean equals(@Nullable Object other)

findNode

@Nullable
public final NavDestination findNode(@IdRes int resId)

Finds a destination in the collection by ID. This will recursively check the parent of this navigation graph if node is not found in this navigation graph.

Parameters
@IdRes int resId

ID to locate

Returns
NavDestination

the node with ID resId

findNode

@Nullable
public final NavDestination findNode(@Nullable String route)

Finds a destination in the collection