Package dagger.hilt.android.lifecycle
Annotation Type HiltViewModel
-
@Target(TYPE) @Retention(CLASS) public @interface HiltViewModel
Identifies aViewModel
for construction injection.The
ViewModel
annotated withHiltViewModel
will be available for creation by thedagger.hilt.android.lifecycle.HiltViewModelFactory
and can be retrieved by default in anActivity
orFragment
annotated withAndroidEntryPoint
. TheHiltViewModel
containing a constructor annotated withInject
will 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); } }
ViewModel
s annotated withHiltViewModel
can 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
ViewModel
must be annotated withInject
orAssistedInject
.Only dependencies available in the
ViewModelComponent
can be injected into theViewModel
.- See Also:
ViewModelComponent
-
-
Optional Element Summary
Optional Elements Modifier and Type Optional Element Description java.lang.Class<?>
assistedFactory
Returns 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
-
-