我将Hilt
与Jetpack Compose
一起使用。
@HiltViewModel
class HomeViewModel @Inject constructor(
private val homeRepository: HomeRepository
): ViewModel() {
fun getCarDetails(): Car {
return homeRepository.getCarDetails()
}
}
这就是我注入回购的方式。
@Module
@InstallIn(SingletonComponent::class)
abstract class DataModule {
@Binds
@Singleton
abstract fun bindHomeRepository(
homeRepository: HomeRepositoryImpl,
): HomeRepository
}
这是我的堆肥。
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
val carData = viewModel.getCarDetails()
Column(
Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) {
TopBar(carData = carData, modifier = Modifier)
CarImage(carData = carData, modifier = Modifier)
}
}
我已经用@AndroidEntryPoint
注释了我的Activity
。搞不清出了什么问题。它崩溃时显示一条消息:
java.lang.RuntimeException: Cannot create an instance of class com.example.carcontroller.ui.HomeViewModel
我的compose
的库版本是1.2.1
,而hilt
的库版本则是2.43.2
。Compose ViewModel版本为2.5.1
。
编辑:我修复了崩溃,下面回答了如何修复。希望这能帮助到别人。
好吧,开发人员的页面还没有更新((所以问题就在这里。有一个名为hilt导航组件的库:
implementation "androidx.hilt:hilt-navigation-compose:1.0.0"
同步后,我们需要使用hiltViewModel()
,而不是像这个那样使用viewModel()
fun HomeScreen(viewModel: HomeViewModel = hiltViewModel())
现在它没有崩溃。非常感谢。