Navigator
public
abstract
class
Navigator
extends Object
java.lang.Object | |
↳ | androidx.navigation.Navigator<D extends androidx.navigation.NavDestination> |
Navigator defines a mechanism for navigating within an app.
Each Navigator sets the policy for a specific type of navigation, e.g.
ActivityNavigator
knows how to launch into destinations
backed by activities using startActivity
.
Navigators should be able to manage their own back stack when navigating between two
destinations that belong to that navigator. The NavController
manages a back stack of
navigators representing the current navigation stack across all navigators.
Each Navigator should add the Navigator.Name annotation
to their class. Any
custom attributes used by the associated destination
subclass should
have a name corresponding with the name of the Navigator, e.g., ActivityNavigator
uses
<declare-styleable name="ActivityNavigator">
Summary
Nested classes | |
---|---|
interface |
Navigator.Extras
Interface indicating that this class should be passed to its respective
|
@interface |
Navigator.Name
This annotation should be added to each Navigator subclass to denote the default name used
to register the Navigator with a |
Public constructors | |
---|---|
Navigator()
|
Public methods | |
---|---|
abstract
D
|
createDestination()
Construct a new NavDestination associated with this Navigator. |
abstract
NavDestination
|
navigate(D destination, Bundle args, NavOptions navOptions, Navigator.Extras navigatorExtras)
Navigate to a destination. |
void
|
onRestoreState(Bundle savedState)
Restore any state previously saved in |
Bundle
|
onSaveState()
Called to ask for a |
abstract
boolean
|
popBackStack()
Attempt to pop this navigator's back stack, performing the appropriate navigation. |
Inherited methods | |
---|---|
Public constructors
Navigator
public Navigator ()
Public methods
createDestination
public abstract D createDestination ()
Construct a new NavDestination associated with this Navigator.
Any initialization of the destination should be done in the destination's constructor as it is not guaranteed that every destination will be created through this method.
Returns | |
---|---|
D |
a new NavDestination |
navigate
public abstract NavDestination navigate (D destination, Bundle args, NavOptions navOptions, Navigator.Extras navigatorExtras)
Navigate to a destination.
Requests navigation to a given destination associated with this navigator in
the navigation graph. This method generally should not be called directly;
NavController
will delegate to it when appropriate.
Parameters | |
---|---|
destination |
D : destination node to navigate to |
args |
Bundle : arguments to use for navigation |
navOptions |
NavOptions : additional options for navigation |
navigatorExtras |
Navigator.Extras : extras unique to your Navigator. |
Returns | |
---|---|
NavDestination |
The NavDestination that should be added to the back stack or null if no change was made to the back stack (i.e., in cases of single top operations where the destination is already on top of the back stack). |
onRestoreState
public void onRestoreState (Bundle savedState)
Restore any state previously saved in onSaveState()
. This will be called before
any calls to navigate(NavDestination, Bundle, NavOptions, Navigator.Extras)
or
popBackStack()
.
Calls to createDestination()
should not be dependent on any state restored here as
createDestination()
can be called before the state is restored.
Parameters | |
---|---|
savedState |
Bundle : The state previously saved
|
onSaveState
public Bundle onSaveState ()
Called to ask for a Bundle
representing the Navigator's state. This will be
restored in onRestoreState(Bundle)
.
Returns | |
---|---|
Bundle |
popBackStack
public abstract boolean popBackStack ()
Attempt to pop this navigator's back stack, performing the appropriate navigation.
Implementations should return true
if navigation
was successful. Implementations should return false
if navigation could not
be performed, for example if the navigator's back stack was empty.
Returns | |
---|---|
boolean |
true if pop was successful
|
Content and code samples on this page are subject to the licenses described in the Content License. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2020-09-30 UTC.