FragmentNavigator
open class FragmentNavigator : Navigator<FragmentNavigator.Destination!>
kotlin.Any | ||
↳ | androidx.navigation.Navigator<androidx.navigation.fragment.FragmentNavigator.Destination> | |
↳ | androidx.navigation.fragment.FragmentNavigator |
Navigator that navigates through fragment transactions
. Every destination using this Navigator must set a valid Fragment class name with android:name
or Destination#setClassName(String)
.
The current Fragment from FragmentNavigator's perspective can be retrieved by calling FragmentManager#getPrimaryNavigationFragment()
with the FragmentManager passed to this FragmentNavigator.
Note that the default implementation does Fragment transactions asynchronously, so the current Fragment will not be available immediately (i.e., in callbacks to NavController.OnDestinationChangedListener
).
Summary
Nested classes | |
---|---|
open |
NavDestination specific to |
Extras that can be passed to FragmentNavigator to enable Fragment specific behavior |
Public constructors | |
---|---|
<init>(@NonNull : Context, @NonNull : FragmentManager, : Int) |
Public methods | |
---|---|
open FragmentNavigator.Destination | |
open Fragment |
instantiateFragment(@NonNull : Context, @NonNull : FragmentManager, @NonNull : String, @Nullable : Bundle?) Instantiates the Fragment via the FragmentManager's |
open NavDestination? |
navigate(@NonNull : FragmentNavigator.Destination, @Nullable : Bundle?, @Nullable : NavOptions?, @Nullable : Navigator.Extras?) Navigate to a destination. |
open Unit |
onRestoreState(@Nullable : Bundle!) |
open Bundle? | |
open Boolean |
Attempt to pop this navigator's back stack, performing the appropriate navigation. |
Public constructors
<init>
FragmentNavigator(
@NonNull : Context,
@NonNull : FragmentManager,
: Int)
Public methods
createDestination
@NonNull open fun createDestination(): FragmentNavigator.Destination
instantiateFragment
@NonNull open funinstantiateFragment(
@NonNull : Context,
@NonNull : FragmentManager,
@NonNull : String,
@Nullable : Bundle?
): Fragment
Deprecated: Set a custom androidx.fragment.app.FragmentFactory
via FragmentManager#setFragmentFactory(FragmentFactory)
to control instantiation of Fragments.
Instantiates the Fragment via the FragmentManager's androidx.fragment.app.FragmentFactory
. Note that this method is not responsible for calling Fragment#setArguments(Bundle)
on the returned Fragment instance.
Parameters | |
---|---|
context |
Context: Context providing the correct ClassLoader |
fragmentManager |
FragmentManager: FragmentManager the Fragment will be added to |
className |
String: The Fragment to instantiate |
args |
Bundle?: The Fragment's arguments, if any |
Return | |
---|---|
Fragment |
A new fragment instance. |
navigate
@Nullable open fun navigate(
@NonNull : FragmentNavigator.Destination,
@Nullable : Bundle?,
@Nullable : NavOptions?,
@Nullable : Navigator.Extras?
): NavDestination?
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.
This method should always call FragmentTransaction#setPrimaryNavigationFragment(Fragment)
so that the Fragment associated with the new destination can be retrieved with FragmentManager#getPrimaryNavigationFragment()
.
Note that the default implementation commits the new Fragment asynchronously, so the new Fragment is not instantly available after this call completes.
Parameters | |
---|---|
destination |
FragmentNavigator.Destination: 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. |
Return | |
---|---|
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). |
onSaveState
@Nullable open fun onSaveState(): Bundle?
popBackStack
open fun popBackStack(): Boolean
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.
This method must call FragmentTransaction#setPrimaryNavigationFragment(Fragment)
if the pop succeeded so that the newly visible Fragment can be retrieved with FragmentManager#getPrimaryNavigationFragment()
.
Note that the default implementation pops the Fragment asynchronously, so the newly visible Fragment from the back stack is not instantly available after this call completes.
Return | |
---|---|
Boolean |
true if pop was successful |