# FragmentHostCallback

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

*** ** * ** ***

<br />

```
abstract class FragmentHostCallback<H : Any?> : FragmentContainer
```

<br />

|---|---|---|
| [kotlin.Any](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html) |||
| ↳ | [androidx.fragment.app.FragmentContainer](https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentContainer) ||
|   | ↳ | [androidx.fragment.app.FragmentHostCallback](https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback) |

*** ** * ** ***

Integration points with the Fragment host.

Fragments may be hosted by any object; such as an `https://developer.android.com/reference/android/app/Activity.html`. In order to host fragments, implement `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback`, overriding the methods applicable to the host.

FragmentManager changes its behavior based on what optional interfaces your FragmentHostCallback implements. This includes the following:

- **`https://developer.android.com/reference/kotlin/androidx/activity/result/ActivityResultRegistryOwner`**: Removes the need to override .onStartIntentSenderFromFragment or .onRequestPermissionsFromFragment.

- **`https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentOnAttachListener`** : Removes the need to manually call `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentManager#addFragmentOnAttachListener(androidx.fragment.app.FragmentOnAttachListener)` from your host in order to receive `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentOnAttachListener#onAttachFragment(androidx.fragment.app.FragmentManager,androidx.fragment.app.Fragment)` callbacks for the `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentController#getSupportFragmentManager()`.

- **`https://developer.android.com/reference/kotlin/androidx/activity/OnBackPressedDispatcherOwner`** : Removes the need to manually call `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentManager#popBackStackImmediate()` when handling the system back button.

- **`https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelStoreOwner`** : Removes the need for your `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentController` to call `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentController#retainNestedNonConfig()` or `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentController#restoreAllState(android.os.Parcelable,java.util.List<androidx.fragment.app.Fragment>)`.

| Parameters |
|---|---|
| `<H : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?>` | the type of object that's currently hosting the fragments. An instance of this class must be returned by `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback#onGetHost()`. |

## Summary

| ### Public constructors |
|---|
| `<H : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?> https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback#FragmentHostCallback(android.content.Context,android.os.Handler,kotlin.Int)( context: https://developer.android.com/reference/android/content/Context.html, handler: https://developer.android.com/reference/android/os/Handler.html, windowAnimations: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html )` |

| ### Public functions |
|---|---|
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback#onDump(kotlin.String,java.io.FileDescriptor,java.io.PrintWriter,kotlin.Array)( prefix: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, fd: https://developer.android.com/reference/java/io/FileDescriptor.html?, writer: https://developer.android.com/reference/java/io/PrintWriter.html, args: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html>? )` Print internal state into the given stream. |
| `open https://developer.android.com/reference/android/view/View.html?` | `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback#onFindViewById(kotlin.Int)(id: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Return the view with the given resource ID. |
| `abstract H` | `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback#onGetHost()()` Return the object that's currently hosting the fragment. |
| `open https://developer.android.com/reference/android/view/LayoutInflater.html` | `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback#onGetLayoutInflater()()` Return a `https://developer.android.com/reference/android/view/LayoutInflater.html`. |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback#onGetWindowAnimations()()` Return the window animations. |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback#onHasView()()` Return `true` if the container holds any view. |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback#onHasWindowAnimations()()` Return `true` if there are window animations. |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `[onRequestPermissionsFromFragment](https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback#onRequestPermissionsFromFragment(androidx.fragment.app.Fragment,kotlin.Array,kotlin.Int))( fragment: https://developer.android.com/reference/kotlin/androidx/fragment/app/Fragment, permissions: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html>, requestCode: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html )` **This function is deprecated.** Have your FragmentHostCallback implement {@link ActivityResultRegistryOwner} to allow Fragments to use {@link Fragment#registerForActivityResult(ActivityResultContract, ActivityResultCallback)} with {@link RequestMultiplePermissions}. |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback#onShouldSaveFragmentState(androidx.fragment.app.Fragment)(fragment: https://developer.android.com/reference/kotlin/androidx/fragment/app/Fragment)` Return `true` if the fragment's state needs to be saved. |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback#onShouldShowRequestPermissionRationale(kotlin.String)(permission: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)` Checks whether to show permission rationale UI from a fragment. |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback#onStartActivityFromFragment(androidx.fragment.app.Fragment,android.content.Intent,kotlin.Int)( fragment: https://developer.android.com/reference/kotlin/androidx/fragment/app/Fragment, intent: https://developer.android.com/reference/android/content/Intent.html, requestCode: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html )` Starts a new `https://developer.android.com/reference/android/app/Activity.html` from the given fragment. |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback#onStartActivityFromFragment(androidx.fragment.app.Fragment,android.content.Intent,kotlin.Int,android.os.Bundle)( fragment: https://developer.android.com/reference/kotlin/androidx/fragment/app/Fragment, intent: https://developer.android.com/reference/android/content/Intent.html, requestCode: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, options: https://developer.android.com/reference/android/os/Bundle.html? )` Starts a new `https://developer.android.com/reference/android/app/Activity.html` from the given fragment. |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `[onStartIntentSenderFromFragment](https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback#onStartIntentSenderFromFragment(androidx.fragment.app.Fragment,android.content.IntentSender,kotlin.Int,android.content.Intent,kotlin.Int,kotlin.Int,kotlin.Int,android.os.Bundle))( fragment: https://developer.android.com/reference/kotlin/androidx/fragment/app/Fragment, intent: https://developer.android.com/reference/android/content/IntentSender.html, requestCode: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, fillInIntent: https://developer.android.com/reference/android/content/Intent.html?, flagsMask: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, flagsValues: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, extraFlags: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, options: https://developer.android.com/reference/android/os/Bundle.html? )` **This function is deprecated.** Have your FragmentHostCallback implement {@link ActivityResultRegistryOwner} to allow Fragments to use {@link Fragment#registerForActivityResult(ActivityResultContract, ActivityResultCallback)} with {@link StartIntentSenderForResult}. |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback#onSupportInvalidateOptionsMenu()()` Invalidates the activity's options menu. |

### Inherited functions

From [androidx.fragment.app.FragmentContainer](https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentContainer) `https://developer.android.com/reference/kotlin/androidx/fragment/app/Fragment` `[instantiate](https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentContainer#instantiate(android.content.Context,java.lang.String,android.os.Bundle))(context: https://developer.android.com/reference/android/content/Context.html, className: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, arguments: https://developer.android.com/reference/android/os/Bundle.html?)`

**This function is deprecated.**

Use `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentManager#setFragmentFactory(androidx.fragment.app.FragmentFactory)` to control how Fragments are instantiated.

<br />

## Public constructors

### FragmentHostCallback

```
<H : Any?> FragmentHostCallback(
    context: Context,
    handler: Handler,
    windowAnimations: Int
)
```

## Public functions

### onDump

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

```
open fun onDump(
    prefix: String,
    fd: FileDescriptor?,
    writer: PrintWriter,
    args: Array<String>?
): Unit
```

Print internal state into the given stream.

| Parameters |
|---|---|
| `prefix: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | Desired prefix to prepend at each line of output. |
| `fd: https://developer.android.com/reference/java/io/FileDescriptor.html?` | The raw file descriptor that the dump is being sent to. |
| `writer: https://developer.android.com/reference/java/io/PrintWriter.html` | The PrintWriter to which you should dump your state. This will be closed for you after you return. |
| `args: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html>?` | additional arguments to the dump request. |

### onFindViewById

```
open fun onFindViewById(id: Int): View?
```

Return the view with the given resource ID. May return `null` if the view is not a child of this container.

### onGetHost

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

```
abstract fun onGetHost(): H
```

Return the object that's currently hosting the fragment. If a `https://developer.android.com/reference/kotlin/androidx/fragment/app/Fragment` is hosted by a `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentActivity`, the object returned here should be the same object returned from `https://developer.android.com/reference/kotlin/androidx/fragment/app/Fragment#getActivity()`.

### onGetLayoutInflater

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

```
open fun onGetLayoutInflater(): LayoutInflater
```

Return a `https://developer.android.com/reference/android/view/LayoutInflater.html`. See `https://developer.android.com/reference/android/app/Activity.html#getLayoutInflater()`.

### onGetWindowAnimations

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

```
open fun onGetWindowAnimations(): Int
```

Return the window animations.

### onHasView

```
open fun onHasView(): Boolean
```

Return `true` if the container holds any view.

### onHasWindowAnimations

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

```
open fun onHasWindowAnimations(): Boolean
```

Return `true` if there are window animations.

### onRequestPermissionsFromFragment

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

```
open fun [onRequestPermissionsFromFragment](https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback#onRequestPermissionsFromFragment(androidx.fragment.app.Fragment,kotlin.Array,kotlin.Int))(
    fragment: Fragment,
    permissions: Array<String>,
    requestCode: Int
): Unit
```

> [!CAUTION]
> **This function is deprecated.**   
> Have your FragmentHostCallback implement {@link ActivityResultRegistryOwner} to allow Fragments to use {@link Fragment#registerForActivityResult(ActivityResultContract, ActivityResultCallback)} with {@link RequestMultiplePermissions}. This method will still be called when Fragments call the deprecated \<code\>requestPermissions()\</code\> method.

Requests permissions from the given fragment. See `https://developer.android.com/reference/android/app/Activity.html#requestPermissions(java.lang.String[], int)`

### onShouldSaveFragmentState

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

```
open fun onShouldSaveFragmentState(fragment: Fragment): Boolean
```

Return `true` if the fragment's state needs to be saved.

### onShouldShowRequestPermissionRationale

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

```
open fun onShouldShowRequestPermissionRationale(permission: String): Boolean
```

Checks whether to show permission rationale UI from a fragment. See `https://developer.android.com/reference/android/app/Activity.html#shouldShowRequestPermissionRationale(java.lang.String)`

### onStartActivityFromFragment

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

```
open fun onStartActivityFromFragment(
    fragment: Fragment,
    intent: Intent,
    requestCode: Int
): Unit
```

Starts a new `https://developer.android.com/reference/android/app/Activity.html` from the given fragment. See `https://developer.android.com/reference/kotlin/androidx/activity/ComponentActivity#startActivityForResult(android.content.Intent,kotlin.Int)`.

### onStartActivityFromFragment

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

```
open fun onStartActivityFromFragment(
    fragment: Fragment,
    intent: Intent,
    requestCode: Int,
    options: Bundle?
): Unit
```

Starts a new `https://developer.android.com/reference/android/app/Activity.html` from the given fragment. See `https://developer.android.com/reference/kotlin/androidx/activity/ComponentActivity#startActivityForResult(android.content.Intent,kotlin.Int)`.

### onStartIntentSenderFromFragment

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

```
open fun [onStartIntentSenderFromFragment](https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentHostCallback#onStartIntentSenderFromFragment(androidx.fragment.app.Fragment,android.content.IntentSender,kotlin.Int,android.content.Intent,kotlin.Int,kotlin.Int,kotlin.Int,android.os.Bundle))(
    fragment: Fragment,
    intent: IntentSender,
    requestCode: Int,
    fillInIntent: Intent?,
    flagsMask: Int,
    flagsValues: Int,
    extraFlags: Int,
    options: Bundle?
): Unit
```

> [!CAUTION]
> **This function is deprecated.**   
> Have your FragmentHostCallback implement {@link ActivityResultRegistryOwner} to allow Fragments to use {@link Fragment#registerForActivityResult(ActivityResultContract, ActivityResultCallback)} with {@link StartIntentSenderForResult}. This method will still be called when Fragments call the deprecated \<code\>startIntentSenderForResult()\</code\> method.

Starts a new `https://developer.android.com/reference/android/content/IntentSender.html` from the given fragment. See `https://developer.android.com/reference/android/app/Activity.html#startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int)`.

### onSupportInvalidateOptionsMenu

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

```
open fun onSupportInvalidateOptionsMenu(): Unit
```

Invalidates the activity's options menu. See `https://developer.android.com/reference/kotlin/androidx/fragment/app/FragmentActivity#supportInvalidateOptionsMenu()`