lateinit属性ViewModelFactory尚未初始化

我在我的android项目中使用dagger 2.25.2和androidx.lifecycle进行依赖注入。但是我有一个错误ViewModelFactory尚未初始化

这是我的代码

class Propertyactivity : AppCompatactivity() {

    @Inject
    lateinit var propertyViewModelFactory: PropertyViewModelFactory
    lateinit var propertyViewModel: PropertyViewModel

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.property_activity)

        propertyViewModel = ViewModelProviders.of(this,propertyViewModelFactory).get(
        PropertyViewModel::class.java)

        propertyViewModel.loadProperties()
}

ViewModelFactory:

class PropertyViewModelFactory @Inject constructor(
    private val propertyViewModel: PropertyViewModel) : ViewModelProvider.Factory {

    override fun <T : ViewModel> create(modelClass: Class<T>): T {
        if (modelClass.isAssignableFrom(PropertyViewModel::class.java!!)) {
            return propertyViewModel as T
        }
        throw IllegalArgumentException("Unknown class name")
    }
}

AppModule:

@Module
class AppModule(val app: Application){

    @Provides
    @Singleton
    fun provideApplication(): Application = app

    @Provides
    @Singleton
    fun providePropertyViewModelFactory(factory: PropertyViewModelFactory): ViewModelProvider.Factory = factory

}

BuildersModule:

@Module
abstract class BuildersModule {

    @ContributesAndroidInjector
    abstract fun contributePropertyactivity(): Propertyactivity
}

AppComponent:

@Singleton
@Component(modules = arrayOf(AndroidInjectionmodule::class,BuildersModule::class,AppModule::class))interface PlotComponent {

    fun inject(app: Application)
}

应用程序类:

class PlotApplication : Application(),HasAndroidInjector {
    @Inject
    lateinit var activityInjector: DispatchingAndroidInjector<Any>

    override fun onCreate() {
        super.onCreate()

        DaggerPlotComponent.builder()
            .appModule(AppModule(this))
            .build().inject(this)
    }
    override fun androidInjector(): AndroidInjector<Any> = activityInjector
}
aa469011586 回答:lateinit属性ViewModelFactory尚未初始化

我看不到您在活动中注入依赖项的位置。问题可能出在此。

添加

AndroidInjection.inject(this)

在您的onCreate

本文链接:https://www.f2er.com/3146712.html

大家都在问