Package dagger.hilt.android.lifecycle
Annotation Type HiltViewModel
-
@Target(TYPE) @Retention(CLASS) public @interface HiltViewModelIdentifies aViewModelfor construction injection.The
ViewModelannotated withHiltViewModelwill be available for creation by thedagger.hilt.android.lifecycle.HiltViewModelFactoryand can be retrieved by default in anActivityorFragmentannotated withAndroidEntryPoint. TheHiltViewModelcontaining a constructor annotated withInjectwill have its dependencies defined in the constructor parameters injected by Dagger's Hilt.Example:
@HiltViewModel public class DonutViewModel extends ViewModel { @Inject public DonutViewModel(SavedStateHandle handle, RecipeRepository repository) { // ... } }@AndroidEntryPoint public class CookingActivity extends AppCompatActivity { public void onCreate(Bundle savedInstanceState) { DonutViewModel vm = new ViewModelProvider(this).get(DonutViewModel.class); } }ViewModels annotated withHiltViewModelcan also be used with assisted injection:@HiltViewModel(assistedFactory = DonutViewModel.Factory.class) public class DonutViewModel extends ViewModel { @AssistedInject public DonutViewModel( SavedStateHandle handle, RecipeRepository repository, $#64;Assisted int donutId ) { // ... } @AssistedFactory public interface Factory { DonutViewModel create(int donutId); } }@AndroidEntryPoint public class CookingActivity extends AppCompatActivity { public void onCreate(Bundle savedInstanceState) { DonutViewModel vm = new ViewModelProvider( getViewModelStore(), getDefaultViewModelProviderFactory(), HiltViewModelExtensions.withCreationCallback( getDefaultViewModelCreationExtras(), (DonutViewModel.Factory factory) -> factory.create(1) ) ).get(DonutViewModel.class); } }Exactly one constructor in the
ViewModelmust be annotated withInjectorAssistedInject.Only dependencies available in the
ViewModelComponentcan be injected into theViewModel.- See Also:
ViewModelComponent
-
-
Optional Element Summary
Optional Elements Modifier and Type Optional Element Description java.lang.Class<?>assistedFactoryReturns a factory class that can be used to create this ViewModel with assisted injection.
-
-
-
Element Detail
-
assistedFactory
java.lang.Class<?> assistedFactory
Returns a factory class that can be used to create this ViewModel with assisted injection. The default value `Object.class` denotes that no factory is specified and the ViewModel is not assisted injected.- Default:
- java.lang.Object.class
-
-