【问题标题】:Koin module unresolved referenceKoin 模块未解决的参考
【发布时间】:2020-08-03 03:32:10
【问题描述】:

我有我想要注入到modules 类中的所有类。

    class modules {
        val myModule = module {
            MainActivityViewModel()
            single { MyRepo() }
        }
    }

我有一个看起来像这样的Application 类,它在清单中声明。

    class MyApplication : Application() {
        override fun onCreate() {
            super.onCreate()
    
            // start Koin!
            startKoin {
                // declare used Android context
                androidContext(this@MyApplication)
                // declare modules
                modules(listOf(myModule)) <------Here my module is unresolved(AS says unresolved reference)
            }
        }
    }

我使用的是 Koin 版本 2.1.6

【问题讨论】:

    标签: android kotlin koin koin-scope


    【解决方案1】:

    myModuleclass modules 内部定义。如果没有此类的实例,您将无法访问它。

    大多数人所做的是将Application 类声明下方的模块定义为全局变量。您可以将其设为private,这样就无法从文件中访问它。

    class MyApplication : Application() {
        override fun onCreate() {
            super.onCreate()
    
            // start Koin!
            startKoin {
                // declare used Android context
                androidContext(this@MyApplication)
                // declare modules
                modules(listOf(myModule))
            }
        }
    }
    
    // Optionally make it private
    val myModule = module {
        MainActivityViewModel()
        single { MyRepo() }
    }
    

    现在您可以删除class modules。但是如果你真的需要这个类并且有目的的创建它,你可以创建这个类的一个实例并调用它的myModule变量:

    modules(listOf(modules().myModule))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      • 2021-08-17
      相关资源
      最近更新 更多