Package dagger.hilt.android.lifecycle
Annotation Interface HiltViewModel
Identifies a
ViewModel
for construction injection.
The ViewModel
annotated with HiltViewModel
will be available for creation by
the
and can be retrieved by default in
an invalid @link
dagger.hilt.android.lifecycle.HiltViewModelFactory
Activity
or Fragment
annotated with AndroidEntryPoint
. The HiltViewModel
containing a constructor
annotated with Inject
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 with HiltViewModel
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 with Inject
or
AssistedInject
.
Only dependencies available in the ViewModelComponent
can be injected into the ViewModel
.
- See Also:
-
Optional Element Summary
Modifier and TypeOptional ElementDescriptionClass<?>
Returns a factory class that can be used to create this ViewModel with assisted injection.
-
Element Details
-
assistedFactory
Class<?> assistedFactoryReturns 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
-