Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save hasanmohdkhan/02e374875bc8b5adff1ad99e43c8e4e7 to your computer and use it in GitHub Desktop.
Save hasanmohdkhan/02e374875bc8b5adff1ad99e43c8e4e7 to your computer and use it in GitHub Desktop.
Optimizing ViewModel with Lifecycle 2.2.0: Passing Arguments/Parameters with SavedState
class SomeViewModelFactory(
private val owner: SavedStateRegistryOwner,
private val someString: String) : AbstractSavedStateViewModelFactory(owner, null) {
override fun <T : ViewModel?> create(key: String, modelClass: Class<T>, state: SavedStateHandle) =
SomeViewModel(state, someString) as T
}
class Fragment: Fragment() {
// Create VM in activity/fragment with VM factory.
val someViewModel: SomeViewModel by viewModels { SomeViewModelFactory(this, "someString") }
}
class SomeViewModel(private val state: SavedStateHandle, private val someString: String) : ViewModel() {
init {
//TODO: Use 'someString' to init process when VM is created. i.e. Get data request.
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment