0

我有我想在这样的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

4

1 回答 1

0

myModule在 a 中定义class 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))
于 2020-08-03T06:25:20.860 回答