无法使用Koin从片段内部加载视图模型

问题描述

我有一个简单的片段和视图模型,我希望在片段内部使用,但是它会不断抛出以下错误

 Caused by: org.koin.core.error.NoBeanDefFoundException: No deFinition found for class:'com.me.ui.MovieListviewmodel'. Check your deFinitions!

viewmodel可以很好地加载到活动分类上,但不能加载到片段上。

下面的片段代码

class TopMoviesFragment : BaseFragment() {

    private val movieListviewmodel: MovieListviewmodel by viewmodel()
override fun onViewCreated(view: View,savedInstanceState: Bundle?) {
        super.onViewCreated(view,savedInstanceState)
        movieListviewmodel.doSomething()

viewmodel代码

class MovieListviewmodel constructor(private val someData: SomeData) : viewmodel() {

     fun doSomething(){
        someData.do()
    }

}

Koin设置

object AppComponent {
    val getAllModules = listof(MainAppModule,ANotherMOdule,networkModule,uiModule)
}


val uiModule = module {
    factory { SOmeData(get()) }
    viewmodel { MovieListviewmodel(get()) }
}


class MovieListApp : Application() {
    override fun onCreate() {
        super.onCreate()
        startKoin{
            // Koin Android logger
            androidLogger()
            //inject Android context
            androidContext(this@MovieListApp)
            AppComponent.getAllModules}
    }
}

解决方法

您是否在MovieListApp类中检查了导入?您可能对startkoin {}方法的导入错误。 我建议你检查这个问题 Koin Android: org.koin.error.NoBeanDefFoundException

,

这个问题在startKoin内部。

我必须传递其中的模块列表:

modules(AppComponent.getAllModules)