在将 Hilt 与撰写一起使用时无法创建 ViewModel 的实例



我将HiltJetpack 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())

现在它没有崩溃。非常感谢。

最新更新