0Pricing
Android Academy · Lektion

In ViewModels injizieren

Verwenden Sie @HiltViewModel für eine saubere Injektion.

In ViewModels injizieren ist eine kostenlose Android Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Android Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.

ViewModels mit Hilt injizieren

ViewModels sind etwas Besonderes: Das Framework erstellt sie über eine Factory. Hilt integriert sich mithilfe der Annotation @HiltViewModel in diesen Prozess.

Das ViewModel annotieren

Markieren Sie das ViewModel mit @HiltViewModel und annotieren Sie seinen Konstruktor mit @Inject.

import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

@HiltViewModel
class UserViewModel @Inject constructor(
    private val repo: UserRepository
) : ViewModel()

Was Hilt bereitstellt

Hilt sucht jeden Konstruktorparameter im Abhängigkeitsgraphen. Solange UserRepository gebunden ist (über ein Modul oder Konstruktor-Injection), stellt Hilt es automatisch bereit.

In Compose abrufen

Verwenden Sie hiltViewModel() innerhalb eines Composable, um ein von Hilt bereitgestelltes ViewModel abzurufen.

import androidx.hilt.navigation.compose.hiltViewModel

@Composable
fun UserScreen(
    vm: UserViewModel = hiltViewModel()
) {
    val state by vm.uiState
        .collectAsStateWithLifecycle()
}

Der Host muss ein Einstiegspunkt sein

Damit hiltViewModel() funktioniert, muss die hostende Activity mit @AndroidEntryPoint annotiert sein. Dadurch wird Compose mit dem Hilt-Graphen verbunden.

@AndroidEntryPoint
class MainActivity : ComponentActivity()

Andere Abhängigkeiten injizieren

Sie können alles injizieren, was im Graphen enthalten ist: Repositories, Use Cases und sogar die von einem Modul bereitgestellte Room-Datenbank.

@HiltViewModel
class HomeViewModel @Inject constructor(
    private val getUsers: GetUsersUseCase,
    private val analytics: Analytics
) : ViewModel()

Application Context injizieren

Benötigen Sie einen Context? Injizieren Sie den qualifizierten Application Context mit @ApplicationContext.

@HiltViewModel
class PrefsViewModel @Inject constructor(
    @ApplicationContext private val context: Context
) : ViewModel()

SavedStateHandle

Hilt stellt SavedStateHandle automatisch bereit. Dieses enthält Navigationsargumente und bleibt auch nach dem Beenden des Prozesses erhalten.

@HiltViewModel
class DetailViewModel @Inject constructor(
    handle: SavedStateHandle
) : ViewModel() {
    val id: Int = handle.get<Int>("id") ?: 0
}

Die vollständige Verknüpfung

Von Anfang bis Ende: Das Modul stellt das Repository bereit → Hilt injiziert es in das ViewModel → Compose ruft das ViewModel über hiltViewModel() ab. Keine manuellen Factories erforderlich.

Kein manueller Factory-Code

Ohne Hilt müssten Sie für jedes ViewModel mit Konstruktorargumenten eine eigene ViewModelProvider.Factory schreiben. @HiltViewModel macht all das überflüssig.

Alles zusammenführen

Sie verfügen nun über den vollständigen modernen Stack: ViewModel mit lebenszyklusbewusstem Zustand, Room-Persistenz, Coroutines und Flow, alles mit Hilt-DI verknüpft.

Kurzer Test

Testen Sie Ihr Verständnis der Injection von ViewModels.

Rückblick

Sie haben gelernt:

  • Mit einem @HiltViewModel- und @Inject-Konstruktor kann Hilt ViewModels erstellen.
  • Rufen Sie sie in Compose mit hiltViewModel() innerhalb eines @AndroidEntryPoint-Hosts ab.
  • Injizieren Sie Repositories, @ApplicationContext und SavedStateHandle.
  • Keine manuellen Factories erforderlich.

Häufig gestellte Fragen

Ist die Lektion „In ViewModels injizieren“ kostenlos?

Ja — der vollständige Text von „In ViewModels injizieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Android Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „In ViewModels injizieren“?

Verwenden Sie @HiltViewModel für eine saubere Injektion. Du übst Android Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Android Academy zu starten?

Keine Vorkenntnisse erforderlich. Android Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „In ViewModels injizieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Android Academy-Lektion Code schreiben und ausführen?

Ja. Jede Android Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Warum Dependency Injection?
  2. Hilt einrichten
  3. Module und Provider
  4. In ViewModels injizieren
← Zurück zu Android Academy