# FragmentManager.OnBackStackChangedListener

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

*** ** * ** ***


```
public interface FragmentManager.OnBackStackChangedListener
```

<br />

*** ** * ** ***

Interface to watch for changes to the back stack.

## Summary

| ### Public methods |
|---|---|
| `default void` | `@https://developer.android.com/reference/androidx/annotation/MainThread https://developer.android.com/reference/androidx/fragment/app/FragmentManager.OnBackStackChangedListener#onBackStackChangeCancelled()()` Called whenever a predictive back gesture is cancelled. |
| `default void` | `@https://developer.android.com/reference/androidx/annotation/MainThread https://developer.android.com/reference/androidx/fragment/app/FragmentManager.OnBackStackChangedListener#onBackStackChangeCommitted(androidx.fragment.app.Fragment,boolean)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment, boolean pop)` Called whenever the contents of a back stack change is committed. |
| `default void` | `@https://developer.android.com/reference/androidx/annotation/MainThread https://developer.android.com/reference/androidx/fragment/app/FragmentManager.OnBackStackChangedListener#onBackStackChangeProgressed(androidx.activity.BackEventCompat)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/activity/BackEventCompat backEventCompat)` Called whenever a predictive back gesture is changing the back stack. |
| `default void` | `@https://developer.android.com/reference/androidx/annotation/MainThread https://developer.android.com/reference/androidx/fragment/app/FragmentManager.OnBackStackChangedListener#onBackStackChangeStarted(androidx.fragment.app.Fragment,boolean)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment, boolean pop)` Called whenever the contents of the back stack are starting to be changed, before any fragment actually changes its lifecycle state. |
| `abstract void` | `@https://developer.android.com/reference/androidx/annotation/MainThread https://developer.android.com/reference/androidx/fragment/app/FragmentManager.OnBackStackChangedListener#onBackStackChanged()()` Called whenever the contents of the back stack change, after the fragment manager has moved all of the fragments to their final state. |

## Public methods

### onBackStackChangeCancelled

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

```
@MainThread
default void onBackStackChangeCancelled()
```

Called whenever a predictive back gesture is cancelled.

This is called immediately after `https://developer.android.com/reference/androidx/fragment/app/FragmentManager.OnBackStackChangedListener#onBackStackChangeProgressed(androidx.activity.BackEventCompat)` once a predictive back gesture has been cancelled and will place the FragmentManager back into the state before the predictive back gesture was started.

### onBackStackChangeCommitted

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

```
@MainThread
default void onBackStackChangeCommitted(@NonNull Fragment fragment, boolean pop)
```

Called whenever the contents of a back stack change is committed. If this is caused by a forward transaction and the given fragment is incoming, it will return `false` from `https://developer.android.com/reference/androidx/fragment/app/Fragment#isRemoving()`. If this is caused by a pop operation and the given fragment is being popped, it will return `true` from `https://developer.android.com/reference/androidx/fragment/app/Fragment#isRemoving()`.

This is called immediately after `https://developer.android.com/reference/androidx/fragment/app/FragmentManager.OnBackStackChangedListener#onBackStackChangeStarted(androidx.fragment.app.Fragment,boolean)` for a forward transaction or for a non-predictive back pop. If this is caused by a predictive back gesture, it will be called after `https://developer.android.com/reference/androidx/fragment/app/FragmentManager.OnBackStackChangedListener#onBackStackChangeProgressed(androidx.activity.BackEventCompat)` before the fragment moves to the final state.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment` | one of the fragments that is affected by the committed back stack change |
| `boolean pop` | true, if this callback was triggered by a pop operation, false otherwise |

### onBackStackChangeProgressed

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

```
@MainThread
default void onBackStackChangeProgressed(@NonNull BackEventCompat backEventCompat)
```

Called whenever a predictive back gesture is changing the back stack. This will continue to be called with an updated `https://developer.android.com/reference/androidx/activity/BackEventCompat` object until the gesture is either cancelled or completed.

This is called immediately after `https://developer.android.com/reference/androidx/fragment/app/FragmentManager.OnBackStackChangedListener#onBackStackChangeStarted(androidx.fragment.app.Fragment,boolean)` during a predictive back gesture. If the gesture is completed, this will be followed by `https://developer.android.com/reference/androidx/fragment/app/FragmentManager.OnBackStackChangedListener#onBackStackChangeCommitted(androidx.fragment.app.Fragment,boolean)` and if it is cancelled, it will be followed by `https://developer.android.com/reference/androidx/fragment/app/FragmentManager.OnBackStackChangedListener#onBackStackChangeCancelled()`.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/activity/BackEventCompat backEventCompat` | provides the current progress of the active predictive back gesture |

### onBackStackChangeStarted

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

```
@MainThread
default void onBackStackChangeStarted(@NonNull Fragment fragment, boolean pop)
```

Called whenever the contents of the back stack are starting to be changed, before any fragment actually changes its lifecycle state. If this is caused by a forward transaction and the given fragment is incoming, it will return `false` from `https://developer.android.com/reference/androidx/fragment/app/Fragment#isRemoving()`. If this is caused by a pop operation and the given fragment is being popped, it will return `true` from `https://developer.android.com/reference/androidx/fragment/app/Fragment#isRemoving()`.

This is the first callback that will be delivered to the listener. If the transaction is caused by a predictive back gesture, it will be followed by an `https://developer.android.com/reference/androidx/fragment/app/FragmentManager.OnBackStackChangedListener#onBackStackChangeProgressed(androidx.activity.BackEventCompat)` callback otherwise, the next callback will be `https://developer.android.com/reference/androidx/fragment/app/FragmentManager.OnBackStackChangedListener#onBackStackChangeCommitted(androidx.fragment.app.Fragment,boolean)`.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/fragment/app/Fragment fragment` | one of the fragments that is affected by the starting back stack change |
| `boolean pop` | true, if this callback was triggered by a pop operation, false otherwise |

### onBackStackChanged

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

```
@MainThread
abstract void onBackStackChanged()
```

Called whenever the contents of the back stack change, after the fragment manager has moved all of the fragments to their final state.

This is the final callback that will be delivered to the listener in all cases except for when the predictive back gesture is cancelled. It will be called after `https://developer.android.com/reference/androidx/fragment/app/FragmentManager.OnBackStackChangedListener#onBackStackChangeCommitted(androidx.fragment.app.Fragment,boolean)`.