NavBackStackSerializer


public final class NavBackStackSerializer<T extends NavKey> implements KSerializer


A KSerializer for NavBackStack.

This serializer wraps a KSerializer for the element type T, enabling serialization and deserialization of NavBackStack instances. The serialization of individual elements is delegated to the provided elementSerializer.

If your stack elements T are open polymorphic (e.g., a interface for different screens), the provided elementSerializer must be correctly configured to handle this.

import androidx.navigation3.runtime.NavBackStack
import androidx.navigation3.runtime.NavKey
import androidx.navigation3.runtime.samples.NavBackStackSerializerSamples.Details
import androidx.navigation3.runtime.samples.NavBackStackSerializerSamples.Home
import androidx.navigation3.runtime.serialization.NavBackStackSerializer
import androidx.savedstate.serialization.decodeFromSavedState
import androidx.savedstate.serialization.encodeToSavedState

// On Android, the no-argument overload uses reflection and requires no configuration.
// This will throw a runtime exception on non-Android platforms during serialization.
val serializer = NavBackStackSerializer<NavKey>()

val backStack = NavBackStack(Home("abc"), Details(42))
val encoded = encodeToSavedState(serializer, backStack)
val decoded = decodeFromSavedState(serializer, encoded)
Parameters
<T extends NavKey>

The type of elements stored in the NavBackStack.

Summary

Public constructors

<T extends NavKey> NavBackStackSerializer(
    @NonNull KSerializer<@NonNull T> elementSerializer
)

Public constructors

public <T extends NavKey> NavBackStackSerializer(
    @NonNull KSerializer<@NonNull T> elementSerializer
)
Parameters
<T extends NavKey>

The type of elements stored in the NavBackStack.

@NonNull KSerializer<@NonNull T> elementSerializer

The KSerializer used to serialize and deserialize individual elements.

Public methods

deserialize

Added in 1.0.0
public @NonNull NavBackStack<@NonNull T> deserialize(@NonNull Decoder decoder)

getDescriptor

Added in 1.0.0
public @NonNull SerialDescriptor getDescriptor()

serialize

Added in 1.0.0
public void serialize(@NonNull Encoder encoder, @NonNull NavBackStack<@NonNull T> value)