# CreationExtras

Artifact: [androidx.lifecycle:lifecycle-viewmodel](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/viewmodel/CreationExtras.kt+class:androidx.lifecycle.viewmodel.CreationExtras) Added in [2.5.0](https://developer.android.com/jetpack/androidx/releases/lifecycle#2.5.0)

*** ** * ** ***

Common/AllAndroid/JVM
- Cmn

  ```
  abstract class CreationExtras
  ```
Known direct subclasses [CreationExtras.Empty](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras.Empty), [MutableCreationExtras](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/MutableCreationExtras)

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras.Empty` | An empty read-only `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras`. |
| `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/MutableCreationExtras` | A modifiable `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` that holds pairs of `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras.Key` and `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html`, allowing efficient value retrieval for each key. |

*** ** * ** ***

A map-like object holding pairs of `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras.Key` and `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html`, enabling efficient value retrieval for each key. Each key in `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` is unique, storing only one value per key.

`https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` is used in `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory#create(kotlin.reflect.KClass,androidx.lifecycle.viewmodel.CreationExtras)` to provide extra information to the `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory`. This makes `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider.Factory` implementations stateless, simplifying factory injection by not requiring all information at construction time.

This abstract class supports read-only access; use `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/MutableCreationExtras` for read-write access.

## Summary

| ### Nested types |
|---|
| `object https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras.Empty : https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` An empty read-only `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras`. |
| `interface https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras.Key<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?>` Key for the elements of `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras`. |

| ### Public companion functions |
|---|---|---|
| `inline https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras.Key<T>` | `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?> https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras#Key()()` Returns a unique `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras#Key()` to be associated with an extra. | Cmn |

| ### Public functions |
|---|---|---|
| `open operator https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras#equals(kotlin.Any)(other: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?)` Compares the specified object with this `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` for equality. | Cmn |
| `abstract operator T?` | `<T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?> https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras#get(androidx.lifecycle.viewmodel.CreationExtras.Key)(key: https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras.Key<T>)` Returns the value to which the specified `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras#get(androidx.lifecycle.viewmodel.CreationExtras.Key)` is associated, or null if this `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` contains no mapping for the key. | Cmn |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras#hashCode()()` Returns the hash code value for this `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras`. | Cmn |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras#toString()()` Returns a string representation of this `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras`. | Cmn |

| ### Extension functions |
|---|---|---|
| `operator https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras.https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras#(androidx.lifecycle.viewmodel.CreationExtras).contains(androidx.lifecycle.viewmodel.CreationExtras.Key)(key: https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras.Key<*>)` Checks if the `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` contains the given `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/package-summary#(androidx.lifecycle.viewmodel.CreationExtras).contains(androidx.lifecycle.viewmodel.CreationExtras.Key)`. | Cmn |
| `operator https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/MutableCreationExtras` | `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras.https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras#(androidx.lifecycle.viewmodel.CreationExtras).plus(androidx.lifecycle.viewmodel.CreationExtras)(creationExtras: https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras)` Creates a new read-only `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` by replacing or adding entries to `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` extras from another `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/package-summary#(androidx.lifecycle.viewmodel.CreationExtras).plus(androidx.lifecycle.viewmodel.CreationExtras)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/lifecycle/SavedStateHandle` | `@https://developer.android.com/reference/kotlin/androidx/annotation/MainThread https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras.https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras#(androidx.lifecycle.viewmodel.CreationExtras).createSavedStateHandle()()` Creates a `https://developer.android.com/reference/kotlin/androidx/lifecycle/SavedStateHandle` for use in your `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel`s. | Cmn |

## Public companion functions

### Key

Cmn

```
inline fun <T : Any?> Key(): CreationExtras.Key<T>
```

Returns a unique `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras#Key()` to be associated with an extra.

## Public functions

### equals

Cmn

```
open operator fun equals(other: Any?): Boolean
```

Compares the specified object with this `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` for equality.

### get

Cmn Added in [2.5.0](https://developer.android.com/jetpack/androidx/releases/lifecycle#2.5.0)

```
abstract operator fun <T : Any?> get(key: CreationExtras.Key<T>): T?
```

Returns the value to which the specified `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras#get(androidx.lifecycle.viewmodel.CreationExtras.Key)` is associated, or null if this `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` contains no mapping for the key.

### hashCode

Cmn

```
open fun hashCode(): Int
```

Returns the hash code value for this `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras`.

### toString

Cmn

```
open fun toString(): String
```

Returns a string representation of this `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras`. The string representation consists of a list of key-value mappings in the order returned by the `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras`'s iterator.

## Extension functions

### CreationExtras.contains

Cmn Artifact: [androidx.lifecycle:lifecycle-viewmodel](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/viewmodel/CreationExtras.kt+function:contains)

```
operator fun CreationExtras.contains(key: CreationExtras.Key<*>): Boolean
```

Checks if the `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` contains the given `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/package-summary#(androidx.lifecycle.viewmodel.CreationExtras).contains(androidx.lifecycle.viewmodel.CreationExtras.Key)`.

This method allows to use the `key in creationExtras` syntax for checking whether an `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/package-summary#(androidx.lifecycle.viewmodel.CreationExtras).contains(androidx.lifecycle.viewmodel.CreationExtras.Key)` is contained in the `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras`.

### CreationExtras.plus

Cmn Artifact: [androidx.lifecycle:lifecycle-viewmodel](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/viewmodel/CreationExtras.kt+function:plus)

```
operator fun CreationExtras.plus(creationExtras: CreationExtras): MutableCreationExtras
```

Creates a new read-only `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` by replacing or adding entries to `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` extras from another `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/package-summary#(androidx.lifecycle.viewmodel.CreationExtras).plus(androidx.lifecycle.viewmodel.CreationExtras)`.

The returned `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` preserves the entry iteration order of the original `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras`.

Those entries of another `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/package-summary#(androidx.lifecycle.viewmodel.CreationExtras).plus(androidx.lifecycle.viewmodel.CreationExtras)` that are missing in `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` extras are iterated in the end in the order of that `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/package-summary#(androidx.lifecycle.viewmodel.CreationExtras).plus(androidx.lifecycle.viewmodel.CreationExtras)`.

### CreationExtras.createSavedStateHandle

Cmn Artifact: [androidx.lifecycle:lifecycle-viewmodel-savedstate](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/SavedStateHandleSupport.kt+function:createSavedStateHandle)

```
@MainThread
fun CreationExtras.createSavedStateHandle(): SavedStateHandle
```

Creates a `https://developer.android.com/reference/kotlin/androidx/lifecycle/SavedStateHandle` for use in your `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModel`s.

This function requires a call to `https://developer.android.com/reference/kotlin/androidx/lifecycle/package-summary#(androidx.savedstate.SavedStateRegistryOwner).enableSavedStateHandles()` during component initialization. Modern Jetpack components (such as `ComponentActivity`, `Fragment`, and `NavBackStackEntry`) perform this call automatically.

The `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` must contain `https://developer.android.com/reference/kotlin/androidx/lifecycle/package-summary#SAVED_STATE_REGISTRY_OWNER_KEY()`, `https://developer.android.com/reference/kotlin/androidx/lifecycle/package-summary#VIEW_MODEL_STORE_OWNER_KEY()`, and `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider#VIEW_MODEL_KEY()`.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/lifecycle/SavedStateHandle` | new `https://developer.android.com/reference/kotlin/androidx/lifecycle/SavedStateHandle` instance |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | If the `https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/CreationExtras` is missing any of the required keys: `https://developer.android.com/reference/kotlin/androidx/lifecycle/package-summary#VIEW_MODEL_STORE_OWNER_KEY()`, `https://developer.android.com/reference/kotlin/androidx/lifecycle/package-summary#SAVED_STATE_REGISTRY_OWNER_KEY()`, or `https://developer.android.com/reference/kotlin/androidx/lifecycle/ViewModelProvider#VIEW_MODEL_KEY()`. |