NavHostFragment

public class NavHostFragment implements NavHost

Known direct subclasses
DynamicNavHostFragment

The NavHostFragment for dynamic features.


NavHostFragment provides an area within your layout for self-contained navigation to occur.

NavHostFragment is intended to be used as the content area within a layout resource defining your app's chrome around it, e.g.:

<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.fragment.app.FragmentContainerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/my_nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
app:navGraph="@navigation/nav_sample"
app:defaultNavHost="true" />
<com.google.android.material.navigation.NavigationView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"/>;
</androidx.drawerlayout.widget.DrawerLayout>

Each NavHostFragment has a NavController that defines valid navigation within the navigation host. This includes the NavGraph as well as navigation state such as current location and back stack that will be saved and restored along with the NavHostFragment itself.

NavHostFragments register their navigation controller at the root of their view subtree such that any descendant can obtain the controller instance through the Navigation helper class's methods such as Navigation.findNavController. View event listener implementations such as android.view.View.OnClickListener within navigation destination fragments can use these helpers to navigate based on user interaction without creating a tight coupling to the navigation host.

Summary

Public fields

final @NonNull boolean
final @NonNull Fragment.AnimationInfo
final @NonNull Bundle
final @NonNull int
final @NonNull boolean
final @NonNull FragmentManager
final @NonNull ViewGroup
final @NonNull int
final @NonNull ViewModelProvider.Factory
final @NonNull boolean
final @NonNull boolean
final @NonNull int
final @NonNull FragmentManager
final @NonNull boolean
final @NonNull boolean
final @NonNull boolean
final @NonNull boolean
final @NonNull FragmentHostCallback<@NonNull ?>
final @NonNull boolean
final @NonNull boolean
final @NonNull LayoutInflater
final @NonNull LifecycleRegistry
final @NonNull Lifecycle.State
final @NonNull boolean
final @NonNull Fragment
final @NonNull boolean
final @NonNull Runnable
final @NonNull boolean
final @NonNull boolean
final @NonNull boolean
final @NonNull boolean
final @NonNull boolean
final @NonNull Bundle
final @NonNull SavedStateRegistryController
final @Nullable Boolean
final @NonNull Bundle
final @NonNull SparseArray<@NonNull Parcelable>
final @NonNull int
final @NonNull String
final @NonNull Fragment
final @NonNull int
final @NonNull String
final @NonNull boolean
final @NonNull View
final @Nullable FragmentViewLifecycleOwner
final @NonNull MutableLiveData<@NonNull LifecycleOwner>
final @NonNull String
final @NonNull NavController

Returns the navigation controller for this navigation host.

Public constructors

Public methods

@CallSuper @NonNull void
@CallSuper @NonNull void
onCreate(@Nullable Bundle savedInstanceState)
@Nullable View
onCreateView(
    @NonNull LayoutInflater inflater,
    @Nullable ViewGroup container,
    @Nullable Bundle savedInstanceState
)
@NonNull void
@CallSuper @NonNull void
onInflate(
    @NonNull Context context,
    @NonNull AttributeSet attrs,
    @Nullable Bundle savedInstanceState
)
@CallSuper @NonNull void
onPrimaryNavigationFragmentChanged(
    @NonNull boolean isPrimaryNavigationFragment
)
@CallSuper @NonNull void
@NonNull void
onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)

Inherited methods

From class Fragment
@NonNull void
callStartTransitionListener(@NonNull boolean calledDirectly)
@NonNull FragmentContainer
@NonNull void
dump(
    @NonNull String prefix,
    @Nullable FileDescriptor fd,
    @NonNull PrintWriter writer,
    @Nullable Array<@NonNull String> args
)
final @NonNull boolean
@Nullable Fragment
@NonNull String
final @Nullable FragmentActivity
@NonNull boolean
@NonNull boolean
@NonNull View
final @Nullable Bundle
final @NonNull FragmentManager
@Nullable Context
@NonNull ViewModelProvider.Factory
@NonNull int
@Nullable Object
@NonNull SharedElementCallback
@NonNull int
@Nullable Object
@NonNull SharedElementCallback
@NonNull View
final @Nullable FragmentManager

This method is deprecated. Deprecated in Java

final @Nullable Object
final @NonNull int
final @NonNull LayoutInflater
@NonNull @RestrictTo(value = [RestrictTo.Scope.LIBRARY_GROUP_PREFIX]) LayoutInflater
getLayoutInflater(@Nullable Bundle savedFragmentState)

This method is deprecated. Deprecated in Java

@NonNull Lifecycle
@NonNull LoaderManager

This method is deprecated. Deprecated in Java

@NonNull int
final @Nullable Fragment
final @NonNull FragmentManager
@NonNull boolean
@NonNull int
@NonNull int
@NonNull float
@Nullable Object
final @NonNull Resources
final @NonNull boolean

This method is deprecated. Deprecated in Java

@Nullable Object
final @NonNull SavedStateRegistry
@Nullable Object
@Nullable Object
@NonNull ArrayList<@NonNull String>
@NonNull ArrayList<@NonNull String>
final @NonNull String
getString(@StringRes @NonNull int resId)
final @NonNull String
getString(@StringRes @NonNull int resId, @Nullable Object formatArgs)
final @Nullable String
final @Nullable Fragment

This method is deprecated. Deprecated in Java

final @NonNull int

This method is deprecated. Deprecated in Java

final @NonNull CharSequence
getText(@StringRes @NonNull int resId)
@NonNull boolean

This method is deprecated. Deprecated in Java

@Nullable View
@MainThread @NonNull LifecycleOwner
@NonNull LiveData<@NonNull LifecycleOwner>
@NonNull ViewModelStore
final @RestrictTo(value = [RestrictTo.Scope.LIBRARY_GROUP_PREFIX]) @SuppressLint(value = ["KotlinPropertyAccess"]) @NonNull boolean
final @NonNull int
@NonNull void
final @NonNull boolean
final @NonNull boolean
final @NonNull boolean
final @NonNull boolean
final @NonNull boolean
final @RestrictTo(value = [RestrictTo.Scope.LIBRARY_GROUP_PREFIX]) @NonNull boolean
@NonNull boolean
final @NonNull boolean
final @NonNull boolean
final @NonNull boolean
final @NonNull boolean
@NonNull void
@MainThread @CallSuper @NonNull void
onActivityCreated(@Nullable Bundle savedInstanceState)

This method is deprecated. Deprecated in Java

@NonNull void
onActivityResult(
    @NonNull int requestCode,
    @NonNull int resultCode,
    @Nullable Intent data
)

This method is deprecated. Deprecated in Java

@MainThread @CallSuper @NonNull void

This method is deprecated. Deprecated in Java

@MainThread @NonNull void

This method is deprecated. Deprecated in Java

@CallSuper @NonNull void
@MainThread @NonNull boolean
@MainThread @Nullable Animation
onCreateAnimation(
    @NonNull int transit,
    @NonNull boolean enter,
    @NonNull int nextAnim
)
@MainThread @Nullable Animator
onCreateAnimator(
    @NonNull int transit,
    @NonNull boolean enter,
    @NonNull int nextAnim
)
@MainThread @NonNull void
onCreateContextMenu(
    @NonNull ContextMenu menu,
    @NonNull View v,
    @Nullable ContextMenu.ContextMenuInfo menuInfo
)
@MainThread @NonNull void
@MainThread @CallSuper @NonNull void
@MainThread @NonNull void
@MainThread @CallSuper @NonNull void
@NonNull LayoutInflater
onGetLayoutInflater(@Nullable Bundle savedInstanceState)
@MainThread @NonNull void
onHiddenChanged(@NonNull boolean hidden)
@UiThread @CallSuper @NonNull void
onInflate(
    @NonNull Activity activity,
    @NonNull AttributeSet attrs,
    @Nullable Bundle savedInstanceState
)

This method is deprecated. Deprecated in Java

@MainThread @CallSuper @NonNull void
@NonNull void
onMultiWindowModeChanged(@NonNull boolean isInMultiWindowMode)
@MainThread @NonNull boolean
@MainThread @NonNull void
@MainThread @CallSuper @NonNull void
@NonNull void
onPictureInPictureModeChanged(@NonNull boolean isInPictureInPictureMode)
@MainThread @NonNull void
@NonNull void
onRequestPermissionsResult(
    @NonNull int requestCode,
    @NonNull Array<@NonNull String> permissions,
    @NonNull int[] grantResults
)

This method is deprecated. Deprecated in Java

@MainThread @CallSuper @NonNull void
@MainThread @CallSuper @NonNull void
@MainThread @CallSuper @NonNull void
@MainThread @CallSuper @NonNull void
onViewStateRestored(@Nullable Bundle savedInstanceState)
@NonNull void
performActivityCreated(@NonNull Bundle savedInstanceState)
@NonNull void
@NonNull void
@NonNull boolean
@NonNull void
performCreate(@NonNull Bundle savedInstanceState)
@NonNull boolean
performCreateOptionsMenu(
    @NonNull Menu menu,
    @NonNull MenuInflater inflater
)
@NonNull void
performCreateView(
    @NonNull LayoutInflater inflater,
    @Nullable ViewGroup container,
    @Nullable Bundle savedInstanceState
)
@NonNull void
@NonNull void
@NonNull void
@NonNull LayoutInflater
@NonNull void
@NonNull void
performMultiWindowModeChanged(@NonNull boolean isInMultiWindowMode)
@NonNull boolean
@NonNull void
@NonNull void
@NonNull void
performPictureInPictureModeChanged(
    @NonNull boolean isInPictureInPictureMode
)
@NonNull boolean
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
final @NonNull void
postponeEnterTransition(@NonNull long duration, @NonNull TimeUnit timeUnit)
final @MainThread @NonNull ActivityResultLauncher<@NonNull I>
<I extends Object, O extends Object> registerForActivityResult(
    @NonNull ActivityResultContract<@NonNull I, @NonNull O> contract,
    @NonNull ActivityResultCallback<@NonNull O> callback
)
final @MainThread @NonNull ActivityResultLauncher<@NonNull I>
<I extends Object, O extends Object> registerForActivityResult(
    @NonNull ActivityResultContract<@NonNull I, @NonNull O> contract,
    @NonNull ActivityResultRegistry registry,
    @NonNull ActivityResultCallback<@NonNull O> callback
)
@NonNull void
final @NonNull void
requestPermissions(
    @NonNull Array<@NonNull String> permissions,
    @NonNull int requestCode
)

This method is deprecated. Deprecated in Java

final @NonNull FragmentActivity
final @NonNull Bundle
final @NonNull Context
final @NonNull FragmentManager

This method is deprecated. Deprecated in Java

final @NonNull Object
final @NonNull Fragment
final @NonNull View
@NonNull void
final @NonNull void
restoreViewState(@NonNull Bundle savedInstanceState)
@NonNull void
@NonNull void
@NonNull void
setAnimations(
    @NonNull int enter,
    @NonNull int exit,
    @NonNull int popEnter,
    @NonNull int popExit
)
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
@NonNull void
setHasOptionsMenu(@NonNull boolean hasMenu)
@NonNull void
@NonNull void
setMenuVisibility(@NonNull boolean menuVisible)
@NonNull void
setNextTransition(@NonNull int nextTransition)
@NonNull void
setPopDirection(@NonNull boolean isPop)
@NonNull void
@NonNull void
@NonNull void
setRetainInstance(@NonNull boolean retain)

This method is deprecated. Deprecated in Java

@NonNull void
@NonNull void
@NonNull void
setSharedElementNames(
    @Nullable ArrayList<@NonNull String> sharedElementSourceNames,
    @Nullable ArrayList<@NonNull String> sharedElementTargetNames
)
@NonNull void
@NonNull void
setTargetFragment(@Nullable Fragment fragment, @NonNull int requestCode)

This method is deprecated. Deprecated in Java

@NonNull void
setUserVisibleHint(@NonNull boolean isVisibleToUser)

This method is deprecated. Deprecated in Java

@NonNull boolean
@NonNull void
startActivity(
    @SuppressLint(value = ["UnknownNullness"]) @NonNull Intent intent
)
@NonNull void
startActivity(
    @SuppressLint(value = ["UnknownNullness"]) @NonNull Intent intent,
    @Nullable Bundle options
)
@NonNull void
startActivityForResult(
    @SuppressLint(value = ["UnknownNullness"]) @NonNull Intent intent,
    @NonNull int requestCode
)

This method is deprecated. Deprecated in Java

@NonNull void
startActivityForResult(
    @SuppressLint(value = ["UnknownNullness"]) @NonNull Intent intent,
    @NonNull int requestCode,
    @Nullable Bundle options
)

This method is deprecated. Deprecated in Java

@NonNull void
startIntentSenderForResult(
    @SuppressLint(value = ["UnknownNullness"]) @NonNull IntentSender intent,
    @NonNull int requestCode,
    @Nullable Intent fillInIntent,
    @NonNull int flagsMask,
    @NonNull int flagsValues,
    @NonNull int extraFlags,
    @Nullable Bundle options
)

This method is deprecated. Deprecated in Java

@NonNull void
@NonNull String
@NonNull void

Public fields

mAdded

@NonNull
public final @NonNull boolean mAdded

mAnimationInfo

@NonNull
public final @NonNull Fragment.AnimationInfo mAnimationInfo

mArguments

@NonNull
public final @NonNull Bundle mArguments

mBackStackNesting

@NonNull
public final @NonNull int mBackStackNesting

mBeingSaved

@NonNull
public final @NonNull boolean mBeingSaved

mChildFragmentManager

@NonNull
public final @NonNull FragmentManager mChildFragmentManager

mContainer

@NonNull
public final @NonNull ViewGroup mContainer

mContainerId

@NonNull
public final @NonNull int mContainerId

mDefaultFactory

@NonNull
public final @NonNull ViewModelProvider.Factory mDefaultFactory

mDeferStart

@NonNull
public final @NonNull boolean mDeferStart

mDetached

@NonNull
public final @NonNull boolean mDetached

mFragmentId

@NonNull
public final @NonNull int mFragmentId

mFragmentManager

@NonNull
public final @NonNull FragmentManager mFragmentManager

mFromLayout

@NonNull
public final @NonNull boolean mFromLayout

mHasMenu

@NonNull
public final @NonNull boolean mHasMenu

mHidden

@NonNull
public final @NonNull boolean mHidden

mHiddenChanged

@NonNull
public final @NonNull boolean mHiddenChanged

mHost

@NonNull
public final @NonNull FragmentHostCallback<@NonNull ?> mHost

mInLayout

@NonNull
public final @NonNull boolean mInLayout

mIsCreated

@NonNull
public final @NonNull boolean mIsCreated

mLayoutInflater

@NonNull
public final @NonNull LayoutInflater mLayoutInflater

mLifecycleRegistry

@NonNull
public final @NonNull LifecycleRegistry mLifecycleRegistry

mMaxState

@NonNull
public final @NonNull Lifecycle.State mMaxState
@NonNull
public final @NonNull boolean mMenuVisible

mParentFragment

@NonNull
public final @NonNull Fragment mParentFragment

mPerformedCreateView

@NonNull
public final @NonNull boolean mPerformedCreateView

mPostponedDurationRunnable

@NonNull
public final @NonNull Runnable mPostponedDurationRunnable

mRemoved

@NonNull
public final @NonNull boolean mRemoved

mRemoving

@NonNull
public final @NonNull boolean mRemoving

mRestored

@NonNull
public final @NonNull boolean mRestored

mRetainInstance

@NonNull
public final @NonNull boolean mRetainInstance

mRetainInstanceChangedWhileDetached

@NonNull
public final @NonNull boolean mRetainInstanceChangedWhileDetached

mSavedFragmentState

@NonNull
public final @NonNull Bundle mSavedFragmentState

mSavedStateRegistryController

@NonNull
public final @NonNull SavedStateRegistryController mSavedStateRegistryController

mSavedUserVisibleHint

@Nullable
public final @Nullable Boolean mSavedUserVisibleHint

mSavedViewRegistryState

@NonNull
public final @NonNull Bundle mSavedViewRegistryState

mSavedViewState

@NonNull
public final @NonNull SparseArray<@NonNull ParcelablemSavedViewState

mState

@NonNull
public final @NonNull int mState

mTag

@NonNull
public final @NonNull String mTag

mTarget

@NonNull
public final @NonNull Fragment mTarget

mTargetRequestCode

@NonNull
public final @NonNull int mTargetRequestCode

mTargetWho

@NonNull
public final @NonNull String mTargetWho

mUserVisibleHint

@NonNull
public final @NonNull boolean mUserVisibleHint

mView

@NonNull
public final @NonNull View mView

mViewLifecycleOwner

@Nullable
public final @Nullable FragmentViewLifecycleOwner mViewLifecycleOwner

mViewLifecycleOwnerLiveData

@NonNull
public final @NonNull MutableLiveData<@NonNull LifecycleOwnermViewLifecycleOwnerLiveData

mWho

@NonNull
public final @NonNull String mWho
@NonNull
public final @NonNull NavController navController

Returns the navigation controller for this navigation host. This method will return null until this host fragment's onCreate has been called and it has had an opportunity to restore from a previous instance state.

Returns
@NonNull NavController

this host's navigation controller

Throws
kotlin.IllegalStateException

if called before onCreate

Public constructors

@NonNull
public final NavHostFragment()

Public methods

onAttach

@CallSuper
@NonNull
public @CallSuper @NonNull void onAttach(@NonNull Context context)

onCreate

@CallSuper
@NonNull
public @CallSuper @NonNull void onCreate(@Nullable Bundle savedInstanceState)

onCreateView

@Nullable
public @Nullable View onCreateView(
    @NonNull LayoutInflater inflater,
    @Nullable ViewGroup container,
    @Nullable Bundle savedInstanceState
)

onDestroyView

@NonNull
public @NonNull void onDestroyView()

onInflate

@CallSuper
@NonNull
public @CallSuper @NonNull void onInflate(
    @NonNull Context context,
    @NonNull AttributeSet attrs,
    @Nullable Bundle savedInstanceState
)

onPrimaryNavigationFragmentChanged

@CallSuper
@NonNull
public @CallSuper @NonNull void onPrimaryNavigationFragmentChanged(
    @NonNull boolean isPrimaryNavigationFragment
)

onSaveInstanceState

@CallSuper
@NonNull
public @CallSuper @NonNull void onSaveInstanceState(@NonNull Bundle outState)

onViewCreated

@NonNull
public @NonNull void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)