HiltNavGraphViewModelLazyKt

Added in 1.0.0

public final class HiltNavGraphViewModelLazyKt


Summary

Public methods

static final @NonNull Lazy<@NonNull VM>
@MainThread
<VM extends ViewModel> hiltNavGraphViewModels(
    @NonNull Fragment receiver,
    @IdRes int navGraphId
)

Returns a property delegate to access a HiltViewModel -annotated ViewModel scoped to a navigation graph present on the NavController back stack:

static final @NonNull Lazy<@NonNull VM>
@MainThread
<VM extends ViewModel, VMF extends Object> hiltNavGraphViewModels(
    @NonNull Fragment receiver,
    @IdRes int navGraphId,
    @NonNull Function1<@NonNull VMF, @NonNull VM> creationCallback
)

Returns a property delegate to access a HiltViewModel -annotated ViewModel with an @AssistedInject-annotated constructor that is scoped to a navigation graph present on the NavController back stack:

Public methods

hiltNavGraphViewModels

@MainThread
public static final @NonNull Lazy<@NonNull VM> <VM extends ViewModel> hiltNavGraphViewModels(
    @NonNull Fragment receiver,
    @IdRes int navGraphId
)

Returns a property delegate to access a HiltViewModel -annotated ViewModel scoped to a navigation graph present on the NavController back stack:

class MyFragment : Fragment() {
val viewmodel: MainViewModel by hiltNavGraphViewModels(R.navigation.main)
}

This property can be accessed only after this NavGraph is on the NavController back stack, and an attempt access prior to that will result in an IllegalArgumentException.

Parameters
@IdRes int navGraphId

ID of a NavGraph that exists on the NavController back stack

hiltNavGraphViewModels

@MainThread
public static final @NonNull Lazy<@NonNull VM> <VM extends ViewModel, VMF extends Object> hiltNavGraphViewModels(
    @NonNull Fragment receiver,
    @IdRes int navGraphId,
    @NonNull Function1<@NonNull VMF, @NonNull VM> creationCallback
)

Returns a property delegate to access a HiltViewModel -annotated ViewModel with an @AssistedInject-annotated constructor that is scoped to a navigation graph present on the NavController back stack:

class MyFragment : Fragment() {
val viewmodel: MainViewModel by hiltNavGraphViewModels(R.navigation.main) { factory: MainViewModelFactory ->
factory.create(...)
}
}

This property can be accessed only after this NavGraph is on the NavController back stack, and an attempt access prior to that will result in an IllegalArgumentException.

Parameters
@IdRes int navGraphId

ID of a NavGraph that exists on the NavController back stack

@NonNull Function1<@NonNull VMF, @NonNull VM> creationCallback

callback that takes an @AssistedFactory-annotated factory and creates a HiltViewModel using @AssistedInject-annotated constructor.