# FragmentTransaction

Artifact: [androidx.fragment:fragment](https://developer.android.com/jetpack/androidx/releases/fragment) [View Source](https://cs.android.com/search?q=file:androidx/fragment/app/FragmentTransaction.java+class:androidx.fragment.app.FragmentTransaction) Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

*** ** * ** ***

<br />

```
public abstract class FragmentTransaction
```

<br />

*** ** * ** ***

Static library support version of the framework's `https://developer.android.com/reference/android/app/FragmentTransaction.html`. Used to write apps that run on platforms prior to Android 3.0. When running on Android 3.0 or above, this implementation is still used; it does not try to switch to the framework's implementation. See the framework SDK documentation for a class overview.

## Summary

| ### Constants |
|---|---|
| `static final int` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#TRANSIT_ENTER_MASK() = 4096` Bit mask that is set for all enter transitions. |
| `static final int` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#TRANSIT_EXIT_MASK() = 8192` Bit mask that is set for all exit transitions. |
| `static final int` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#TRANSIT_FRAGMENT_CLOSE() = 8194` Fragment is being removed from the stack |
| `static final int` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#TRANSIT_FRAGMENT_FADE() = 4099` Fragment should simply fade in or out; that is, no strong navigation associated with it except that it is appearing or disappearing for some reason. |
| `static final int` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_CLOSE() = 8197` Fragment is being removed from the stack with Activity close transition. |
| `static final int` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_OPEN() = 4100` Fragment is being added onto the stack with Activity open transition. |
| `static final int` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#TRANSIT_FRAGMENT_OPEN() = 4097` Fragment is being added onto the stack |
| `static final int` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#TRANSIT_NONE() = 0` No animation for transition. |
| `static final int` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#TRANSIT_UNSET() = -1` Not set up for a transition. |

| ### Public constructors |
|---|
| `[FragmentTransaction](https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#FragmentTransaction())()` **This method is deprecated.** You should not instantiate a FragmentTransaction except via `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#beginTransaction()`. <br /> |

| ### Public methods |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#add(int,androidx.fragment.app.Fragment)(@https://developer.android.com/reference/androidx/annotation/IdRes int containerViewId, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment)` Calls `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#add(int,androidx.fragment.app.Fragment,java.lang.String)` with a null tag. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#add(androidx.fragment.app.Fragment,java.lang.String)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html tag)` Calls `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#add(int,androidx.fragment.app.Fragment,java.lang.String)` with a 0 containerViewId. |
| `final @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#add(android.view.ViewGroup,androidx.fragment.app.Fragment,java.lang.String)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/view/ViewGroup.html container, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html tag )` Add a fragment to the activity state. |
| `final @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#add(int,java.lang.Class<? extends androidx.fragment.app.Fragment>,android.os.Bundle)( @https://developer.android.com/reference/androidx/annotation/IdRes int containerViewId, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/fragment/app/Fragment> fragmentClass, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/os/Bundle.html args )` Calls `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#add(int,java.lang.Class<? extends androidx.fragment.app.Fragment>,android.os.Bundle,java.lang.String)` with a null tag. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#add(int,androidx.fragment.app.Fragment,java.lang.String)( @https://developer.android.com/reference/androidx/annotation/IdRes int containerViewId, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html tag )` Add a fragment to the activity state. |
| `final @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#add(java.lang.Class<? extends androidx.fragment.app.Fragment>,android.os.Bundle,java.lang.String)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/fragment/app/Fragment> fragmentClass, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/os/Bundle.html args, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html tag )` Calls `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#add(int,java.lang.Class<? extends androidx.fragment.app.Fragment>,android.os.Bundle,java.lang.String)` with a 0 containerViewId. |
| `final @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#add(int,java.lang.Class<? extends androidx.fragment.app.Fragment>,android.os.Bundle,java.lang.String)( @https://developer.android.com/reference/androidx/annotation/IdRes int containerViewId, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/fragment/app/Fragment> fragmentClass, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/os/Bundle.html args, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html tag )` Add a fragment to the activity state. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#addSharedElement(android.view.View,java.lang.String)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/view/View.html sharedElement, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html name)` Used with custom Transitions to map a View from a removed or hidden Fragment to a View from a shown or added Fragment. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#addToBackStack(java.lang.String)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html name)` Add this transaction to the back stack. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#attach(androidx.fragment.app.Fragment)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment)` Re-attach a fragment after it had previously been detached from the UI with `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#detach(androidx.fragment.app.Fragment)`. |
| `abstract int` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#commit()()` Schedules a commit of this transaction. |
| `abstract int` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#commitAllowingStateLoss()()` Like `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#commit()` but allows the commit to be executed after an activity's state is saved. |
| `abstract void` | `@https://developer.android.com/reference/androidx/annotation/MainThread https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#commitNow()()` Commits this transaction synchronously. |
| `abstract void` | `@https://developer.android.com/reference/androidx/annotation/MainThread https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#commitNowAllowingStateLoss()()` Like `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#commitNow()` but allows the commit to be executed after an activity's state is saved. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#detach(androidx.fragment.app.Fragment)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment)` Detach the given fragment from the UI. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#disallowAddToBackStack()()` Disallow calls to `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#addToBackStack(java.lang.String)`. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#hide(androidx.fragment.app.Fragment)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment)` Hides an existing fragment. |
| `boolean` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#isAddToBackStackAllowed()()` Returns true if this FragmentTransaction is allowed to be added to the back stack. |
| `boolean` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#isEmpty()()` |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#remove(androidx.fragment.app.Fragment)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment)` Remove an existing fragment. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#replace(int,androidx.fragment.app.Fragment)(@https://developer.android.com/reference/androidx/annotation/IdRes int containerViewId, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment)` Calls `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#replace(int,androidx.fragment.app.Fragment,java.lang.String)` with a null tag. |
| `final @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#replace(int,java.lang.Class<? extends androidx.fragment.app.Fragment>,android.os.Bundle)( @https://developer.android.com/reference/androidx/annotation/IdRes int containerViewId, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/fragment/app/Fragment> fragmentClass, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/os/Bundle.html args )` Calls `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#replace(int,java.lang.Class<? extends androidx.fragment.app.Fragment>,android.os.Bundle,java.lang.String)` with a null tag. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#replace(int,androidx.fragment.app.Fragment,java.lang.String)( @https://developer.android.com/reference/androidx/annotation/IdRes int containerViewId, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html tag )` Replace an existing fragment that was added to a container. |
| `final @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#replace(int,java.lang.Class<? extends androidx.fragment.app.Fragment>,android.os.Bundle,java.lang.String)( @https://developer.android.com/reference/androidx/annotation/IdRes int containerViewId, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/fragment/app/Fragment> fragmentClass, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/os/Bundle.html args, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html tag )` Replace an existing fragment that was added to a container. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#runOnCommit(java.lang.Runnable)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Runnable.html runnable)` Add a Runnable to this transaction that will be run after this transaction has been committed. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `[setAllowOptimization](https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setAllowOptimization(boolean))(boolean allowOptimization)` **This method is deprecated.** This has been renamed `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setReorderingAllowed(boolean)`. <br /> |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `[setBreadCrumbShortTitle](https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setBreadCrumbShortTitle(int))(@https://developer.android.com/reference/androidx/annotation/StringRes int res)` **This method is deprecated.** Store breadcrumb short titles separately from fragment transactions. <br /> |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `[setBreadCrumbShortTitle](https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setBreadCrumbShortTitle(java.lang.CharSequence))(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/CharSequence.html text)` **This method is deprecated.** Store breadcrumb short titles separately from fragment transactions. <br /> |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `[setBreadCrumbTitle](https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setBreadCrumbTitle(int))(@https://developer.android.com/reference/androidx/annotation/StringRes int res)` **This method is deprecated.** Store breadcrumb titles separately from fragment transactions. <br /> |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `[setBreadCrumbTitle](https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setBreadCrumbTitle(java.lang.CharSequence))(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/CharSequence.html text)` **This method is deprecated.** Store breadcrumb titles separately from fragment transactions. <br /> |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setCustomAnimations(int,int)( @https://developer.android.com/reference/androidx/annotation/AnimatorRes @https://developer.android.com/reference/androidx/annotation/AnimRes int enter, @https://developer.android.com/reference/androidx/annotation/AnimatorRes @https://developer.android.com/reference/androidx/annotation/AnimRes int exit )` Set specific animation resources to run for the fragments that are entering and exiting in this transaction. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setCustomAnimations(int,int,int,int)( @https://developer.android.com/reference/androidx/annotation/AnimatorRes @https://developer.android.com/reference/androidx/annotation/AnimRes int enter, @https://developer.android.com/reference/androidx/annotation/AnimatorRes @https://developer.android.com/reference/androidx/annotation/AnimRes int exit, @https://developer.android.com/reference/androidx/annotation/AnimatorRes @https://developer.android.com/reference/androidx/annotation/AnimRes int popEnter, @https://developer.android.com/reference/androidx/annotation/AnimatorRes @https://developer.android.com/reference/androidx/annotation/AnimRes int popExit )` Set specific animation resources to run for the fragments that are entering and exiting in this transaction. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setMaxLifecycle(androidx.fragment.app.Fragment,androidx.lifecycle.Lifecycle.State)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State state)` Set a ceiling for the state of an active fragment in this FragmentManager. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setPrimaryNavigationFragment(androidx.fragment.app.Fragment)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment)` Set a currently active fragment in this FragmentManager as the primary navigation fragment. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setReorderingAllowed(boolean)(boolean reorderingAllowed)` Sets whether or not to allow optimizing operations within and across transactions. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setTransition(int)(int transition)` Select a standard transition animation for this transaction. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `[setTransitionStyle](https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setTransitionStyle(int))(@https://developer.android.com/reference/androidx/annotation/StyleRes int styleRes)` **This method is deprecated.** The desired functionality never worked correctly. <br /> |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#show(androidx.fragment.app.Fragment)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment)` Shows a previously hidden fragment. |

| ### Extension functions |
|---|---|
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `<F extends https://developer.android.com/reference/androidx/fragment/app/Fragment> https://developer.android.com/reference/androidx/fragment/app/FragmentTransactionKt.https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#(androidx.fragment.app.FragmentTransaction).add(kotlin.String,android.os.Bundle)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction receiver, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html tag, https://developer.android.com/reference/android/os/Bundle.html args )` Add a fragment to the associated `https://developer.android.com/reference/androidx/fragment/app/FragmentManager` without adding the Fragment to any container view. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `<F extends https://developer.android.com/reference/androidx/fragment/app/Fragment> https://developer.android.com/reference/androidx/fragment/app/FragmentTransactionKt.https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#(androidx.fragment.app.FragmentTransaction).add(kotlin.Int,kotlin.String,android.os.Bundle)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction receiver, @https://developer.android.com/reference/androidx/annotation/IdRes int containerViewId, https://developer.android.com/reference/java/lang/String.html tag, https://developer.android.com/reference/android/os/Bundle.html args )` Add a fragment to the associated `https://developer.android.com/reference/androidx/fragment/app/FragmentManager`, inflating the Fragment's view into the container view specified by `https://developer.android.com/reference/androidx/fragment/app/package-summary#(androidx.fragment.app.FragmentTransaction).add(kotlin.Int,kotlin.String,android.os.Bundle)`, to later retrieve via `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#findFragmentById(int)`. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | `<F extends https://developer.android.com/reference/androidx/fragment/app/Fragment> https://developer.android.com/reference/androidx/fragment/app/FragmentTransactionKt.https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#(androidx.fragment.app.FragmentTransaction).replace(kotlin.Int,kotlin.String,android.os.Bundle)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction receiver, @https://developer.android.com/reference/androidx/annotation/IdRes int containerViewId, https://developer.android.com/reference/java/lang/String.html tag, https://developer.android.com/reference/android/os/Bundle.html args )` Replace an existing fragment that was added to a container. |

## Constants

### TRANSIT_ENTER_MASK

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public static final int TRANSIT_ENTER_MASK = 4096
```

Bit mask that is set for all enter transitions.

### TRANSIT_EXIT_MASK

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public static final int TRANSIT_EXIT_MASK = 8192
```

Bit mask that is set for all exit transitions.

### TRANSIT_FRAGMENT_CLOSE

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public static final int TRANSIT_FRAGMENT_CLOSE = 8194
```

Fragment is being removed from the stack

### TRANSIT_FRAGMENT_FADE

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public static final int TRANSIT_FRAGMENT_FADE = 4099
```

Fragment should simply fade in or out; that is, no strong navigation associated with it except that it is appearing or disappearing for some reason.

### TRANSIT_FRAGMENT_MATCH_ACTIVITY_CLOSE

Added in [1.4.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.4.0)

```
public static final int TRANSIT_FRAGMENT_MATCH_ACTIVITY_CLOSE = 8197
```

Fragment is being removed from the stack with Activity close transition.

| See also |
|---|---|
| `https://developer.android.com/reference/android/R.attr.html#activityCloseEnterAnimation` |   |
| `https://developer.android.com/reference/android/R.attr.html#activityCloseExitAnimation` |   |

### TRANSIT_FRAGMENT_MATCH_ACTIVITY_OPEN

Added in [1.4.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.4.0)

```
public static final int TRANSIT_FRAGMENT_MATCH_ACTIVITY_OPEN = 4100
```

Fragment is being added onto the stack with Activity open transition.

| See also |
|---|---|
| `https://developer.android.com/reference/android/R.attr.html#activityOpenEnterAnimation` |   |
| `https://developer.android.com/reference/android/R.attr.html#activityOpenExitAnimation` |   |

### TRANSIT_FRAGMENT_OPEN

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public static final int TRANSIT_FRAGMENT_OPEN = 4097
```

Fragment is being added onto the stack

### TRANSIT_NONE

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public static final int TRANSIT_NONE = 0
```

No animation for transition.

### TRANSIT_UNSET

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public static final int TRANSIT_UNSET = -1
```

Not set up for a transition.

## Public constructors

### FragmentTransaction

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0) Deprecated in [1.2.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.2.0)

```
public [FragmentTransaction](https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#FragmentTransaction())()
```

> [!CAUTION]
> **This method is deprecated.**   
>
> You should not instantiate a FragmentTransaction except via `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#beginTransaction()`.

## Public methods

### add

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction add(@IdRes int containerViewId, @NonNull Fragment fragment)
```

Calls `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#add(int,androidx.fragment.app.Fragment,java.lang.String)` with a null tag.

### add

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction add(@NonNull Fragment fragment, @Nullable String tag)
```

Calls `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#add(int,androidx.fragment.app.Fragment,java.lang.String)` with a 0 containerViewId.

### add

Added in [1.8.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.8.0)

```
public final @NonNull FragmentTransaction add(
    @NonNull ViewGroup container,
    @NonNull Fragment fragment,
    @Nullable String tag
)
```

Add a fragment to the activity state. This fragment may optionally also have its view (if `https://developer.android.com/reference/androidx/fragment/app/Fragment#onCreateView(android.view.LayoutInflater,android.view.ViewGroup,android.os.Bundle)` returns non-null) into a container view of the activity.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/view/ViewGroup.html container` | The container this fragment is to be placed in. The id of the container should be non-zero and unique. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment` | The fragment to be added. This fragment must not already be added to the activity. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html tag` | Optional tag name for the fragment, to later retrieve the fragment with `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#findFragmentByTag(java.lang.String)`. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | Returns the same FragmentTransaction instance. |

### add

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.2.0)

```
public final @NonNull FragmentTransaction add(
    @IdRes int containerViewId,
    @NonNull Class<Fragment> fragmentClass,
    @Nullable Bundle args
)
```

Calls `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#add(int,java.lang.Class<? extends androidx.fragment.app.Fragment>,android.os.Bundle,java.lang.String)` with a null tag.

### add

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction add(
    @IdRes int containerViewId,
    @NonNull Fragment fragment,
    @Nullable String tag
)
```

Add a fragment to the activity state. This fragment may optionally also have its view (if `https://developer.android.com/reference/androidx/fragment/app/Fragment#onCreateView(android.view.LayoutInflater,android.view.ViewGroup,android.os.Bundle)` returns non-null) into a container view of the activity.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/IdRes int containerViewId` | Optional identifier of the container this fragment is to be placed in. If 0, it will not be placed in a container. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment` | The fragment to be added. This fragment must not already be added to the activity. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html tag` | Optional tag name for the fragment, to later retrieve the fragment with `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#findFragmentByTag(java.lang.String)`. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | Returns the same FragmentTransaction instance. |

### add

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.2.0)

```
public final @NonNull FragmentTransaction add(
    @NonNull Class<Fragment> fragmentClass,
    @Nullable Bundle args,
    @Nullable String tag
)
```

Calls `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#add(int,java.lang.Class<? extends androidx.fragment.app.Fragment>,android.os.Bundle,java.lang.String)` with a 0 containerViewId.

### add

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.2.0)

```
public final @NonNull FragmentTransaction add(
    @IdRes int containerViewId,
    @NonNull Class<Fragment> fragmentClass,
    @Nullable Bundle args,
    @Nullable String tag
)
```

Add a fragment to the activity state. This fragment may optionally also have its view (if `https://developer.android.com/reference/androidx/fragment/app/Fragment#onCreateView(android.view.LayoutInflater,android.view.ViewGroup,android.os.Bundle)` returns non-null) into a container view of the activity.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/IdRes int containerViewId` | Optional identifier of the container this fragment is to be placed in. If 0, it will not be placed in a container. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/fragment/app/Fragment> fragmentClass` | The fragment to be added, created via the `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#getFragmentFactory()`. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/os/Bundle.html args` | Optional arguments to be set on the fragment. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html tag` | Optional tag name for the fragment, to later retrieve the fragment with `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#findFragmentByTag(java.lang.String)`. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | Returns the same FragmentTransaction instance. |

### addSharedElement

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction addSharedElement(@NonNull View sharedElement, @NonNull String name)
```

Used with custom Transitions to map a View from a removed or hidden Fragment to a View from a shown or added Fragment. <var translate="no">sharedElement</var> must have a unique transitionName in the View hierarchy.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/view/View.html sharedElement` | A View in a disappearing Fragment to match with a View in an appearing Fragment. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html name` | The transitionName for a View in an appearing Fragment to match to the shared element. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/fragment/app/Fragment#setSharedElementReturnTransition(java.lang.Object)` |   |
| `https://developer.android.com/reference/androidx/fragment/app/Fragment#setSharedElementEnterTransition(java.lang.Object)` |   |

### addToBackStack

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction addToBackStack(@Nullable String name)
```

Add this transaction to the back stack. This means that the transaction will be remembered after it is committed, and will reverse its operation when later popped off the stack.

`https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setReorderingAllowed(boolean)` must be set to `true` in the same transaction as addToBackStack() to allow the pop of that transaction to be reordered.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html name` | An optional name for this back stack state, or null. |

### attach

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction attach(@NonNull Fragment fragment)
```

Re-attach a fragment after it had previously been detached from the UI with `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#detach(androidx.fragment.app.Fragment)`. This causes its view hierarchy to be re-created, attached to the UI, and displayed.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment` | The fragment to be attached. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | Returns the same FragmentTransaction instance. |

### commit

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public abstract int commit()
```

Schedules a commit of this transaction. The commit does not happen immediately; it will be scheduled as work on the main thread to be done the next time that thread is ready.

A transaction can only be committed with this method prior to its containing activity saving its state. If the commit is attempted after that point, an exception will be thrown. This is because the state after the commit can be lost if the activity needs to be restored from its state. See `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#commitAllowingStateLoss()` for situations where it may be okay to lose the commit.

| Returns |
|---|---|
| `int` | Returns the identifier of this transaction's back stack entry, if `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#addToBackStack(java.lang.String)` had been called. Otherwise, returns a negative number. |

### commitAllowingStateLoss

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public abstract int commitAllowingStateLoss()
```

Like `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#commit()` but allows the commit to be executed after an activity's state is saved. This is dangerous because the commit can be lost if the activity needs to later be restored from its state, so this should only be used for cases where it is okay for the UI state to change unexpectedly on the user.

### commitNow

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
@MainThread
public abstract void commitNow()
```

Commits this transaction synchronously. Any added fragments will be initialized and brought completely to the lifecycle state of their host and any removed fragments will be torn down accordingly before this call returns. Committing a transaction in this way allows fragments to be added as dedicated, encapsulated components that monitor the lifecycle state of their host while providing firmer ordering guarantees around when those fragments are fully initialized and ready. Fragments that manage views will have those views created and attached.

Calling `commitNow` is preferable to calling `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#commit()` followed by `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#executePendingTransactions()` as the latter will have the side effect of attempting to commit *all* currently pending transactions whether that is the desired behavior or not.

Transactions committed in this way may not be added to the FragmentManager's back stack, as doing so would break other expected ordering guarantees for other asynchronously committed transactions. This method will throw `https://developer.android.com/reference/java/lang/IllegalStateException.html` if the transaction previously requested to be added to the back stack with `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#addToBackStack(java.lang.String)`.

A transaction can only be committed with this method prior to its containing activity saving its state. If the commit is attempted after that point, an exception will be thrown. This is because the state after the commit can be lost if the activity needs to be restored from its state. See `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#commitAllowingStateLoss()` for situations where it may be okay to lose the commit.

### commitNowAllowingStateLoss

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
@MainThread
public abstract void commitNowAllowingStateLoss()
```

Like `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#commitNow()` but allows the commit to be executed after an activity's state is saved. This is dangerous because the commit can be lost if the activity needs to later be restored from its state, so this should only be used for cases where it is okay for the UI state to change unexpectedly on the user.

### detach

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction detach(@NonNull Fragment fragment)
```

Detach the given fragment from the UI. This is the same state as when it is put on the back stack: the fragment is removed from the UI, however its state is still being actively managed by the fragment manager. When going into this state its view hierarchy is destroyed.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment` | The fragment to be detached. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | Returns the same FragmentTransaction instance. |

### disallowAddToBackStack

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction disallowAddToBackStack()
```

Disallow calls to `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#addToBackStack(java.lang.String)`. Any future calls to addToBackStack will throw `https://developer.android.com/reference/java/lang/IllegalStateException.html`. If addToBackStack has already been called, this method will throw IllegalStateException.

### hide

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction hide(@NonNull Fragment fragment)
```

Hides an existing fragment. This is only relevant for fragments whose views have been added to a container, as this will cause the view to be hidden.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment` | The fragment to be hidden. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | Returns the same FragmentTransaction instance. |

### isAddToBackStackAllowed

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public boolean isAddToBackStackAllowed()
```

Returns true if this FragmentTransaction is allowed to be added to the back stack. If this method would return false, `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#addToBackStack(java.lang.String)` will throw `https://developer.android.com/reference/java/lang/IllegalStateException.html`.

| Returns |
|---|---|
| `boolean` | True if `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#addToBackStack(java.lang.String)` is permitted on this transaction. |

### isEmpty

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public boolean isEmpty()
```

| Returns |
|---|---|
| `boolean` | `true` if this transaction contains no operations, `false` otherwise. |

### remove

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction remove(@NonNull Fragment fragment)
```

Remove an existing fragment. If it was added to a container, its view is also removed from that container.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment` | The fragment to be removed. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | Returns the same FragmentTransaction instance. |

### replace

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction replace(@IdRes int containerViewId, @NonNull Fragment fragment)
```

Calls `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#replace(int,androidx.fragment.app.Fragment,java.lang.String)` with a null tag.

### replace

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.2.0)

```
public final @NonNull FragmentTransaction replace(
    @IdRes int containerViewId,
    @NonNull Class<Fragment> fragmentClass,
    @Nullable Bundle args
)
```

Calls `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#replace(int,java.lang.Class<? extends androidx.fragment.app.Fragment>,android.os.Bundle,java.lang.String)` with a null tag.

### replace

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction replace(
    @IdRes int containerViewId,
    @NonNull Fragment fragment,
    @Nullable String tag
)
```

Replace an existing fragment that was added to a container. This is essentially the same as calling `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#remove(androidx.fragment.app.Fragment)` for all currently added fragments that were added with the same containerViewId and then `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#add(int,androidx.fragment.app.Fragment,java.lang.String)` with the same arguments given here.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/IdRes int containerViewId` | Identifier of the container whose fragment(s) are to be replaced. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment` | The new fragment to place in the container. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html tag` | Optional tag name for the fragment, to later retrieve the fragment with `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#findFragmentByTag(java.lang.String)`. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | Returns the same FragmentTransaction instance. |

### replace

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.2.0)

```
public final @NonNull FragmentTransaction replace(
    @IdRes int containerViewId,
    @NonNull Class<Fragment> fragmentClass,
    @Nullable Bundle args,
    @Nullable String tag
)
```

Replace an existing fragment that was added to a container. This is essentially the same as calling `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#remove(androidx.fragment.app.Fragment)` for all currently added fragments that were added with the same containerViewId and then `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#add(int,androidx.fragment.app.Fragment,java.lang.String)` with the same arguments given here.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/IdRes int containerViewId` | Identifier of the container whose fragment(s) are to be replaced. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Class.html<https://developer.android.com/reference/androidx/fragment/app/Fragment> fragmentClass` | The new fragment to place in the container, created via the `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#getFragmentFactory()`. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/os/Bundle.html args` | Optional arguments to be set on the fragment. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/String.html tag` | Optional tag name for the fragment, to later retrieve the fragment with `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#findFragmentByTag(java.lang.String)`. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | Returns the same FragmentTransaction instance. |

### runOnCommit

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction runOnCommit(@NonNull Runnable runnable)
```

Add a Runnable to this transaction that will be run after this transaction has been committed. If fragment transactions are `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setReorderingAllowed(boolean)` this may be after other subsequent fragment operations have also taken place, or operations in this transaction may have been optimized out due to the presence of a subsequent fragment transaction in the batch.

If a transaction is committed using `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#commitAllowingStateLoss()` this runnable may be executed when the FragmentManager is in a state where new transactions may not be committed without allowing state loss.

`runOnCommit` may not be used with transactions `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#addToBackStack(java.lang.String)` as Runnables cannot be persisted with back stack state. `https://developer.android.com/reference/java/lang/IllegalStateException.html` will be thrown if `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#addToBackStack(java.lang.String)` has been previously called for this transaction or if it is called after a call to `runOnCommit`.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Runnable.html runnable` | Runnable to add |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | this FragmentTransaction |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | if `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#addToBackStack(java.lang.String)` has been called |

### setAllowOptimization

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction [setAllowOptimization](https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setAllowOptimization(boolean))(boolean allowOptimization)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> This has been renamed `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setReorderingAllowed(boolean)`.

### setBreadCrumbShortTitle

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0) Deprecated in [1.2.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.2.0)

```
public @NonNull FragmentTransaction [setBreadCrumbShortTitle](https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setBreadCrumbShortTitle(int))(@StringRes int res)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Store breadcrumb short titles separately from fragment transactions. For example, by using an `android:label` on a fragment in a navigation graph.

Set the short title to show as a bread crumb when this transaction is on the back stack.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/StringRes int res` | A string resource containing the title. |

### setBreadCrumbShortTitle

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0) Deprecated in [1.2.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.2.0)

```
public @NonNull FragmentTransaction [setBreadCrumbShortTitle](https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setBreadCrumbShortTitle(java.lang.CharSequence))(@Nullable CharSequence text)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Store breadcrumb short titles separately from fragment transactions. For example, by using an `android:label` on a fragment in a navigation graph.

Like `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setBreadCrumbShortTitle(int)` but taking a raw string; this method is *not* recommended, as the string can not be changed later if the locale changes.

### setBreadCrumbTitle

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0) Deprecated in [1.2.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.2.0)

```
public @NonNull FragmentTransaction [setBreadCrumbTitle](https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setBreadCrumbTitle(int))(@StringRes int res)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Store breadcrumb titles separately from fragment transactions. For example, by using an `android:label` on a fragment in a navigation graph.

Set the full title to show as a bread crumb when this transaction is on the back stack.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/StringRes int res` | A string resource containing the title. |

### setBreadCrumbTitle

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0) Deprecated in [1.2.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.2.0)

```
public @NonNull FragmentTransaction [setBreadCrumbTitle](https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setBreadCrumbTitle(java.lang.CharSequence))(@Nullable CharSequence text)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Store breadcrumb titles separately from fragment transactions. For example, by using an `android:label` on a fragment in a navigation graph.

Like `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setBreadCrumbTitle(int)` but taking a raw string; this method is *not* recommended, as the string can not be changed later if the locale changes.

### setCustomAnimations

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction setCustomAnimations(
    @AnimatorRes @AnimRes int enter,
    @AnimatorRes @AnimRes int exit
)
```

Set specific animation resources to run for the fragments that are entering and exiting in this transaction. These animations will not be played when popping the back stack.

This method applies the custom animations to all future fragment operations; previous operations are unaffected. Fragment operations in the same `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` can set different animations by calling this method prior to each operation, e.g:

```
 fragmentManager.beginTransaction()
     .setCustomAnimations(enter1, exit1)
     .add(MyFragmentClass, args, tag1) // this fragment gets the first animations
     .setCustomAnimations(enter2, exit2)
     .add(MyFragmentClass, args, tag2) // this fragment gets the second animations
     .commit()
```

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/AnimatorRes @https://developer.android.com/reference/androidx/annotation/AnimRes int enter` | An animation or animator resource ID used for the enter animation on the view of the fragment being added or attached. |
| `@https://developer.android.com/reference/androidx/annotation/AnimatorRes @https://developer.android.com/reference/androidx/annotation/AnimRes int exit` | An animation or animator resource ID used for the exit animation on the view of the fragment being removed or detached. |

### setCustomAnimations

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction setCustomAnimations(
    @AnimatorRes @AnimRes int enter,
    @AnimatorRes @AnimRes int exit,
    @AnimatorRes @AnimRes int popEnter,
    @AnimatorRes @AnimRes int popExit
)
```

Set specific animation resources to run for the fragments that are entering and exiting in this transaction. The `popEnter` and `popExit` animations will be played for enter/exit operations specifically when popping the back stack.

This method applies the custom animations to all future fragment operations; previous operations are unaffected. Fragment operations in the same `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` can set different animations by calling this method prior to each operation, e.g:

```
 fragmentManager.beginTransaction()
     .setCustomAnimations(enter1, exit1, popEnter1, popExit1)
     .add(MyFragmentClass, args, tag1) // this fragment gets the first animations
     .setCustomAnimations(enter2, exit2, popEnter2, popExit2)
     .add(MyFragmentClass, args, tag2) // this fragment gets the second animations
     .commit()
```

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/AnimatorRes @https://developer.android.com/reference/androidx/annotation/AnimRes int enter` | An animation or animator resource ID used for the enter animation on the view of the fragment being added or attached. |
| `@https://developer.android.com/reference/androidx/annotation/AnimatorRes @https://developer.android.com/reference/androidx/annotation/AnimRes int exit` | An animation or animator resource ID used for the exit animation on the view of the fragment being removed or detached. |
| `@https://developer.android.com/reference/androidx/annotation/AnimatorRes @https://developer.android.com/reference/androidx/annotation/AnimRes int popEnter` | An animation or animator resource ID used for the enter animation on the view of the fragment being readded or reattached caused by `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#popBackStack()` or similar methods. |
| `@https://developer.android.com/reference/androidx/annotation/AnimatorRes @https://developer.android.com/reference/androidx/annotation/AnimRes int popExit` | An animation or animator resource ID used for the enter animation on the view of the fragment being removed or detached caused by `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#popBackStack()` or similar methods. |

### setMaxLifecycle

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction setMaxLifecycle(@NonNull Fragment fragment, @NonNull Lifecycle.State state)
```

Set a ceiling for the state of an active fragment in this FragmentManager. If fragment is already above the received state, it will be forced down to the correct state.

The fragment provided must currently be added to the FragmentManager to have it's Lifecycle state capped, or previously added as part of this transaction. If the `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State#INITIALIZED` is passed in as the `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State` and the provided fragment has already moved beyond `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State#INITIALIZED`, an `https://developer.android.com/reference/java/lang/IllegalArgumentException.html` will be thrown.

If the `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State#DESTROYED` is passed in as the `https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State` an `https://developer.android.com/reference/java/lang/IllegalArgumentException.html` will be thrown.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment` | the fragment to have it's state capped. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/lifecycle/Lifecycle.State state` | the ceiling state for the fragment. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | the same FragmentTransaction instance |

### setPrimaryNavigationFragment

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction setPrimaryNavigationFragment(@Nullable Fragment fragment)
```

Set a currently active fragment in this FragmentManager as the primary navigation fragment.

The primary navigation fragment's `https://developer.android.com/reference/androidx/fragment/app/Fragment#getChildFragmentManager()` will be called first to process delegated navigation actions such as `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#popBackStack()` if no ID or transaction name is provided to pop to. Navigation operations outside of the fragment system may choose to delegate those actions to the primary navigation fragment as returned by `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#getPrimaryNavigationFragment()`.

The fragment provided must currently be added to the FragmentManager to be set as a primary navigation fragment, or previously added as part of this transaction.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment` | the fragment to set as the primary navigation fragment |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | the same FragmentTransaction instance |

### setReorderingAllowed

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction setReorderingAllowed(boolean reorderingAllowed)
```

Sets whether or not to allow optimizing operations within and across transactions. This will remove redundant operations, eliminating operations that cancel. For example, if two transactions are executed together, one that adds a fragment A and the next replaces it with fragment B, the operations will cancel and only fragment B will be added. That means that fragment A may not go through the creation/destruction lifecycle.

The side effect of removing redundant operations is that fragments may have state changes out of the expected order. For example, one transaction adds fragment A, a second adds fragment B, then a third removes fragment A. Without removing the redundant operations, fragment B could expect that while it is being created, fragment A will also exist because fragment A will be removed after fragment B was added. With removing redundant operations, fragment B cannot expect fragment A to exist when it has been created because fragment A's add/remove will be optimized out.

It can also reorder the state changes of Fragments to allow for better Transitions. Added Fragments may have `https://developer.android.com/reference/androidx/fragment/app/Fragment#onCreate(android.os.Bundle)` called before replaced Fragments have `https://developer.android.com/reference/androidx/fragment/app/Fragment#onDestroy()` called.

`https://developer.android.com/reference/androidx/fragment/app/Fragment#postponeEnterTransition()` requires `setReorderingAllowed(true)`.

The default is `false`.

| Parameters |
|---|---|
| `boolean reorderingAllowed` | `true` to enable optimizing out redundant operations or `false` to disable optimizing out redundant operations on this transaction. |

### setTransition

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction setTransition(int transition)
```

Select a standard transition animation for this transaction. May be one of `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#TRANSIT_NONE()`, `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#TRANSIT_FRAGMENT_OPEN()`, `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#TRANSIT_FRAGMENT_CLOSE()`, or `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#TRANSIT_FRAGMENT_FADE()`.

### setTransitionStyle

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0) Deprecated in [1.2.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.2.0)

```
public @NonNull FragmentTransaction [setTransitionStyle](https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#setTransitionStyle(int))(@StyleRes int styleRes)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> The desired functionality never worked correctly. This should not be used.

Set a custom style resource that will be used for resolving transit animations.

### show

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.1.0)

```
public @NonNull FragmentTransaction show(@NonNull Fragment fragment)
```

Shows a previously hidden fragment. This is only relevant for fragments whose views have been added to a container, as this will cause the view to be shown.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment` | The fragment to be shown. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | Returns the same FragmentTransaction instance. |

## Extension functions

### FragmentTransactionKt.add

Artifact: [androidx.fragment:fragment](https://developer.android.com/jetpack/androidx/releases/fragment) [View Source](https://cs.android.com/search?q=file:androidx/fragment/app/FragmentTransaction.kt+function:add)

```
public final @NonNull FragmentTransaction <F extends Fragment> FragmentTransactionKt.add(
    @NonNull FragmentTransaction receiver,
    @NonNull String tag,
    Bundle args
)
```

Add a fragment to the associated `https://developer.android.com/reference/androidx/fragment/app/FragmentManager` without adding the Fragment to any container view.

The new fragment to be added will be created via the `https://developer.android.com/reference/androidx/fragment/app/FragmentFactory` of the `https://developer.android.com/reference/androidx/fragment/app/FragmentManager`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html tag` | Tag name for the fragment, to later retrieve the fragment with `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#findFragmentByTag(java.lang.String)`. |
| `https://developer.android.com/reference/android/os/Bundle.html args` | Optional arguments to be set on the fragment. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | Returns the same `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` instance. |

### FragmentTransactionKt.add

Artifact: [androidx.fragment:fragment](https://developer.android.com/jetpack/androidx/releases/fragment) [View Source](https://cs.android.com/search?q=file:androidx/fragment/app/FragmentTransaction.kt+function:add)

```
public final @NonNull FragmentTransaction <F extends Fragment> FragmentTransactionKt.add(
    @NonNull FragmentTransaction receiver,
    @IdRes int containerViewId,
    String tag,
    Bundle args
)
```

Add a fragment to the associated `https://developer.android.com/reference/androidx/fragment/app/FragmentManager`, inflating the Fragment's view into the container view specified by `https://developer.android.com/reference/androidx/fragment/app/package-summary#(androidx.fragment.app.FragmentTransaction).add(kotlin.Int,kotlin.String,android.os.Bundle)`, to later retrieve via `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#findFragmentById(int)`.

The new fragment to be added will be created via the `https://developer.android.com/reference/androidx/fragment/app/FragmentFactory` of the `https://developer.android.com/reference/androidx/fragment/app/FragmentManager`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/IdRes int containerViewId` | Identifier of the container this fragment is to be placed in. |
| `https://developer.android.com/reference/java/lang/String.html tag` | Optional tag name for the fragment, to later retrieve the fragment with `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#findFragmentByTag(java.lang.String)`. |
| `https://developer.android.com/reference/android/os/Bundle.html args` | Optional arguments to be set on the fragment. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | Returns the same `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` instance. |

### FragmentTransactionKt.replace

Artifact: [androidx.fragment:fragment](https://developer.android.com/jetpack/androidx/releases/fragment) [View Source](https://cs.android.com/search?q=file:androidx/fragment/app/FragmentTransaction.kt+function:replace)

```
public final @NonNull FragmentTransaction <F extends Fragment> FragmentTransactionKt.replace(
    @NonNull FragmentTransaction receiver,
    @IdRes int containerViewId,
    String tag,
    Bundle args
)
```

Replace an existing fragment that was added to a container. This is essentially the same as calling `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#remove(androidx.fragment.app.Fragment)` for all currently added fragments that were added with the same `containerViewId` and then `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction#add(java.lang.Class<? extends androidx.fragment.app.Fragment>,android.os.Bundle,java.lang.String)` with the same arguments given here.

The new fragment to place in the container will be created via the `https://developer.android.com/reference/androidx/fragment/app/FragmentFactory` of the `https://developer.android.com/reference/androidx/fragment/app/FragmentManager`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/IdRes int containerViewId` | Identifier of the container whose fragment(s) are to be replaced. |
| `https://developer.android.com/reference/java/lang/String.html tag` | Optional tag name for the fragment, to later retrieve the fragment with `https://developer.android.com/reference/androidx/fragment/app/FragmentManager#findFragmentByTag(java.lang.String)`. |
| `https://developer.android.com/reference/android/os/Bundle.html args` | Optional arguments to be set on the fragment. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` | Returns the same `https://developer.android.com/reference/androidx/fragment/app/FragmentTransaction` instance. |