TestNavHostController


class TestNavHostController : NavHostController


Subclass of NavHostController that offers additional APIs for testing Navigation.

Summary

Public constructors

Public functions

Unit

Navigate directly to any destination on the current androidx.navigation.NavGraph via an explicit deep link.

Unit
setCurrentDestination(destRoute: String, args: Bundle)

Navigate directly to any destination on the current androidx.navigation.NavGraph via an explicit deep link.

Public properties

List<NavBackStackEntry>

Gets an immutable copy of the elements currently on the back stack.

Inherited functions

open Unit

Adds an OnDestinationChangedListener to this controller to receive a callback whenever the currentDestination or its arguments change.

inline Boolean

Clears any saved state associated with KClass T that was previously saved via popBackStack when using a saveState value of true.

Boolean

Clears any saved state associated with destinationId that was previously saved via popBackStack when using a saveState value of true.

Boolean
@MainThread
<T : Any> clearBackStack(route: KClass<T>)

Clears any saved state associated with KClass route that was previously saved via popBackStack when using a saveState value of true.

Boolean
@MainThread
<T : Any> clearBackStack(route: T)

Clears any saved state associated with KClass T that was previously saved via popBackStack when using a saveState value of true.

Boolean

Clears any saved state associated with route that was previously saved via popBackStack when using a saveState value of true.

open NavDeepLinkBuilder

Create a deep link to a destination within this NavController.

inline NavBackStackEntry

Gets the topmost NavBackStackEntry for a route from KClass.

open NavBackStackEntry
getBackStackEntry(destinationId: @IdRes Int)

Gets the topmost NavBackStackEntry for a destination id.

NavBackStackEntry
<T : Any> getBackStackEntry(route: KClass<T>)

Gets the topmost NavBackStackEntry for a route from KClass.

NavBackStackEntry
<T : Any> getBackStackEntry(route: T)

Gets the topmost NavBackStackEntry for a route from an Object.

NavBackStackEntry

Gets the topmost NavBackStackEntry for a route.

open ViewModelStoreOwner

Gets the ViewModelStoreOwner for a NavGraph.

open Boolean

Checks the given Intent for a Navigation deep link and navigates to the deep link if present.

Boolean

Checks the given NavDeepLinkRequest for a Navigation deep link and navigates to the destination if present.

open Unit
@MainThread
navigate(deepLink: Uri)

Navigate to a destination via the given deep link Uri.

open Unit

Navigate via the given NavDirections

open Unit

Navigate to a destination via the given NavDeepLinkRequest.

open Unit

Navigate to a destination from the current navigation graph.

open Unit
@MainThread
navigate(deepLink: Uri, navOptions: NavOptions?)

Navigate to a destination via the given deep link Uri.

open Unit
@MainThread
navigate(directions: NavDirections, navOptions: NavOptions?)

Navigate via the given NavDirections

open Unit
@MainThread
navigate(directions: NavDirections, navigatorExtras: Navigator.Extras)

Navigate via the given NavDirections

open Unit

Navigate to a destination via the given NavDeepLinkRequest.

open Unit
@MainThread
navigate(resId: @IdRes Int, args: Bundle?)

Navigate to a destination from the current navigation graph.

Unit
@MainThread
<T : Any> navigate(route: T, builder: NavOptionsBuilder.() -> Unit)

Navigate to a route from an Object in the current NavGraph.

Unit
@MainThread
navigate(route: String, builder: NavOptionsBuilder.() -> Unit)

Navigate to a route in the current NavGraph.

open Unit
@MainThread
navigate(
    deepLink: Uri,
    navOptions: NavOptions?,
    navigatorExtras: Navigator.Extras?
)

Navigate to a destination via the given deep link Uri.

open Unit
@MainThread
navigate(
    request: NavDeepLinkRequest,
    navOptions: NavOptions?,
    navigatorExtras: Navigator.Extras?
)

Navigate to a destination via the given NavDeepLinkRequest.

open Unit
@MainThread
navigate(resId: @IdRes Int, args: Bundle?, navOptions: NavOptions?)

Navigate to a destination from the current navigation graph.

Unit
@MainThread
<T : Any> navigate(
    route: T,
    navOptions: NavOptions?,
    navigatorExtras: Navigator.Extras?
)

Navigate to a route from an Object in the current NavGraph.

Unit
@MainThread
navigate(
    route: String,
    navOptions: NavOptions?,
    navigatorExtras: Navigator.Extras?
)

Navigate to a route in the current NavGraph.

open Unit
@MainThread
navigate(
    resId: @IdRes Int,
    args: Bundle?,
    navOptions: NavOptions?,
    navigatorExtras: Navigator.Extras?
)

Navigate to a destination from the current navigation graph.

open Boolean

Attempts to navigate up in the navigation hierarchy.

open Boolean

Attempts to pop the controller's back stack.

open Boolean
@MainThread
popBackStack(destinationId: @IdRes Int, inclusive: Boolean)

Attempts to pop the controller's back stack back to a specific destination.

inline Boolean
@MainThread
<T : Any> popBackStack(inclusive: Boolean, saveState: Boolean)

Attempts to pop the controller's back stack back to a specific destination.

open Boolean
@MainThread
popBackStack(
    destinationId: @IdRes Int,
    inclusive: Boolean,
    saveState: Boolean
)

Attempts to pop the controller's back stack back to a specific destination.

Boolean
@MainThread
<T : Any> popBackStack(
    route: KClass<T>,
    inclusive: Boolean,
    saveState: Boolean
)

Attempts to pop the controller's back stack back to a specific destination.

Boolean
@MainThread
<T : Any> popBackStack(route: T, inclusive: Boolean, saveState: Boolean)

Attempts to pop the controller's back stack back to a specific destination.

Boolean
@MainThread
popBackStack(route: String, inclusive: Boolean, saveState: Boolean)

Attempts to pop the controller's back stack back to a specific destination.

open Unit

Removes an OnDestinationChangedListener from this controller.

open Unit

Restores all navigation controller state from a bundle.

open Bundle?

Saves all navigation controller state to a Bundle.

open Unit

Sets the navigation graph to the specified resource.

open Unit
@MainThread
@CallSuper
setGraph(graph: NavGraph, startDestinationArgs: Bundle?)

Sets the navigation graph to the specified graph.

open Unit
@MainThread
@CallSuper
setGraph(graphResId: @NavigationRes Int, startDestinationArgs: Bundle?)

Sets the navigation graph to the specified resource.

final Unit

Set whether the NavController should handle the system Back button events via the registered OnBackPressedDispatcher.

final Unit

Sets the host's LifecycleOwner.

final Unit

Sets the host's OnBackPressedDispatcher.

final Unit

Sets the host's ViewModelStore used by the NavController to store ViewModels at the navigation graph level.

Inherited properties

open NavBackStackEntry?

The topmost NavBackStackEntry.

Flow<NavBackStackEntry>

A Flow that will emit the currently active NavBackStackEntry whenever it changes.

open NavDestination?

The current destination.

open NavGraph

The topmost navigation graph associated with this NavController.

open NavInflater

The inflater for this controller.

open NavigatorProvider

The NavController's NavigatorProvider.

open NavBackStackEntry?

The previous visible NavBackStackEntry.

StateFlow<List<NavBackStackEntry>>

A StateFlow that will emit the currently visible NavBackStackEntries whenever they change.

Public constructors

TestNavHostController

Added in 2.3.0
TestNavHostController(context: Context)

Public functions

setCurrentDestination

Added in 2.3.0
fun setCurrentDestination(destId: @IdRes Int, args: Bundle = Bundle()): Unit

Navigate directly to any destination on the current androidx.navigation.NavGraph via an explicit deep link. If an implicit deep link exists for this destination use #navigate(Uri) instead.

Parameters
destId: @IdRes Int

The destination id to navigate to.

args: Bundle = Bundle()

The arguments to pass to the destination.

Throws
java.lang.IllegalArgumentException

If the destination does not exist on the NavGraph.

setCurrentDestination

Added in 2.4.0
fun setCurrentDestination(destRoute: String, args: Bundle = Bundle()): Unit

Navigate directly to any destination on the current androidx.navigation.NavGraph via an explicit deep link. If an implicit deep link exists for this destination use #navigate(Uri) instead.

Parameters
destRoute: String

The destination route to navigate to.

args: Bundle = Bundle()

The arguments to pass to the destination.

Throws
java.lang.IllegalArgumentException

If the destination does not exist on the NavGraph.

Public properties

backStack

Added in 2.3.0
val backStackList<NavBackStackEntry>

Gets an immutable copy of the elements currently on the back stack.