在Android Hilt中使用@ViewModelInject对接口进行注入时,如果出现UninitializedPropertyAccessException的错误,可能是因为没有正确初始化注入的接口。
解决方法如下:
@Singleton
class MyInterfaceImpl : MyInterface {
// 实现接口的方法
}
class MyViewModel @ViewModelInject constructor(private val myInterface: MyInterface) : ViewModel() {
// 使用myInterface进行操作
}
@Module
@InstallIn(ViewModelComponent::class)
object MyModule {
@Singleton
@Provides
fun provideMyInterface(): MyInterface {
return MyInterfaceImpl()
}
}
@Component(modules = [AndroidEntryPointModule::class, MyModule::class])
interface ApplicationComponent : AndroidInjector {
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: MyApplication): Builder
fun build(): ApplicationComponent
}
}
这样,在你的ViewModel中使用@ViewModelInject注解进行接口注入时就不会出现UninitializedPropertyAccessException的错误了。