Menginjeksi ke ViewModel
Gunakan @HiltViewModel untuk injeksi yang rapi.
Menginjeksi ke ViewModel adalah pelajaran Android Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Android Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Android Academy mencakup 4 pelajaran total.
Menginjeksi ViewModel dengan Hilt
ViewModel bersifat khusus: kerangka kerja membuat instance-nya melalui factory. Hilt terintegrasi dengan mekanisme ini melalui anotasi @HiltViewModel.
Memberi Anotasi pada ViewModel
Beri tanda pada ViewModel dengan @HiltViewModel dan beri anotasi @Inject pada konstruktornya.
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
@HiltViewModel
class UserViewModel @Inject constructor(
private val repo: UserRepository
) : ViewModel()Yang Disediakan Hilt
Hilt mencari setiap parameter konstruktor di dalam graf dependensi. Selama UserRepository telah diikat (melalui modul atau injeksi konstruktor), Hilt akan memasoknya secara otomatis.
Mengambilnya di Compose
Gunakan hiltViewModel() di dalam Composable untuk memperoleh ViewModel yang disediakan Hilt.
import androidx.hilt.navigation.compose.hiltViewModel
@Composable
fun UserScreen(
vm: UserViewModel = hiltViewModel()
) {
val state by vm.uiState
.collectAsStateWithLifecycle()
}Host Harus Menjadi Titik Masuk
Agar hiltViewModel() berfungsi, Activity yang menjadi host harus diberi anotasi @AndroidEntryPoint. Dengan begitu, Compose terhubung ke graf Hilt.
@AndroidEntryPoint
class MainActivity : ComponentActivity()Menginjeksi Dependensi Lain
Anda dapat menginjeksi apa pun yang ada di dalam graf: repositori, use case, bahkan basis data Room yang disediakan oleh modul.
@HiltViewModel
class HomeViewModel @Inject constructor(
private val getUsers: GetUsersUseCase,
private val analytics: Analytics
) : ViewModel()Menginjeksi Context Aplikasi
Memerlukan context? Injeksi application context yang telah diberi kualifikasi dengan @ApplicationContext.
@HiltViewModel
class PrefsViewModel @Inject constructor(
@ApplicationContext private val context: Context
) : ViewModel()SavedStateHandle
Hilt secara otomatis menyediakan SavedStateHandle, yang membawa argumen navigasi dan tetap bertahan setelah proses dihentikan.
@HiltViewModel
class DetailViewModel @Inject constructor(
handle: SavedStateHandle
) : ViewModel() {
val id: Int = handle.get<Int>("id") ?: 0
}Penghubungan Lengkap
Dari awal hingga akhir: Modul menyediakan repositori → Hilt menginjeksi repositori tersebut ke ViewModel → Compose memperoleh ViewModel melalui hiltViewModel(). Tidak ada factory manual di mana pun.
Tanpa Kode Factory Manual
Tanpa Hilt, Anda harus menulis ViewModelProvider.Factory khusus untuk setiap ViewModel yang memerlukan argumen konstruktor. @HiltViewModel menghilangkan semua kebutuhan tersebut.
Menyatukan Seluruh Materi
Sekarang Anda memiliki tumpukan modern yang lengkap: ViewModel + status yang menyadari siklus hidup, persistensi Room, coroutine dan Flow, semuanya terhubung dengan DI Hilt.
Pemeriksaan Singkat
Uji pemahaman Anda tentang injeksi ViewModel.
Rangkuman
Anda telah mempelajari:
- Konstruktor
@HiltViewModel+@Injectmemungkinkan Hilt membuat ViewModel. - Dapatkan ViewModel di Compose dengan
hiltViewModel()di dalam host@AndroidEntryPoint. - Injeksi repositori,
@ApplicationContext, danSavedStateHandle. - Factory manual tidak diperlukan.
Belajar Kotlin dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 36
- Pelajaran
- 152
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menginjeksi ke ViewModel” gratis?
Ya — teks lengkap “Menginjeksi ke ViewModel” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Android Academy, upgrade ke CoddyKit PRO. Kursus Android Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menginjeksi ke ViewModel”?
Gunakan @HiltViewModel untuk injeksi yang rapi. Kamu berlatih Android Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Android Academy?
Tidak diperlukan pengalaman sebelumnya. Android Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Menginjeksi ke ViewModel” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Android Academy ini?
Ya. Setiap pelajaran Android Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mengapa Menggunakan Injeksi Dependensi?
- Menyiapkan Hilt
- Modul dan Penyedia
- Menginjeksi ke ViewModel