我正在使用koin学习kotlin。在目录日志中运行该应用程序时,我看到以下消息。

java.lang.IllegalStateException:KoinApplication尚未启动

尽管我在MyApplication中使用了 startKoin

class MyApplication : Application() {

    var listOfModules = module {
        single { GitHubServiceApi() }
    }

    override fun onCreate() {
        super.onCreate()

        startKoin {
            androidLogger()
            androidContext(this@MyApplication)
            modules(listOfModules)
        }

    }

}

kotlin - java.lang.IllegalStateException : KoinApplication has not been started-LMLPHP

我发现了我做错了的问题,我想在mainfest.xml中添加MyApplcation名称

kotlin - java.lang.IllegalStateException : KoinApplication has not been started-LMLPHP

最佳答案

在 list 文件中添加“android:name =”。TheApplication“即可解决此问题。

    android:name=".TheApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_app_icon_round"
    android:supportsRtl="true"
    android:theme="@style/Theme.Shrine">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
“android:name =“。TheApplication”是Koin的类名
class TheApplication : Application() {

    override fun onCreate() {
        super.onCreate()

        if (BuildConfig.DEBUG) {
            Timber.plant(Timber.DebugTree())
        }

        startKoin {
            androidLogger()
            androidContext(androidContext = this@TheApplication)

            modules(
                listOfModules
            )
        }
    }
}

10-03 00:59