android.app.Application cannot be cast to org.kodein.di.KodeinAware
See original GitHub issueI get the following error when the app starts, I’ve tried to trace it but to no avail
2020-02-17 12:22:18.289 16962-16962/ga.forntoh.bableschool E/AndroidRuntime: FATAL EXCEPTION: main
Process: ga.forntoh.bableschool, PID: 16962
java.lang.RuntimeException: Unable to start activity ComponentInfo{ga.forntoh.bableschool/ga.forntoh.bableschool.ui.category.CategoriesActivity}: java.lang.ClassCastException: android.app.Application cannot be cast to org.kodein.di.KodeinAware
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3114)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3257)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1948)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7050)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to org.kodein.di.KodeinAware
at org.kodein.di.android.ClosestKt.kodein(closest.kt:25)
at org.kodein.di.android.ClosestKt.access$kodein(closest.kt:1)
at org.kodein.di.android.ContextKodeinPropertyDelegateProvider$provideDelegate$1.invoke(closest.kt:39)
at org.kodein.di.android.ContextKodeinPropertyDelegateProvider$provideDelegate$1.invoke(closest.kt:38)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at ga.forntoh.bableschool.ui.base.BaseActivity.getKodein(Unknown Source:7)
at org.kodein.di.KodeinAwareKt$Instance$1.invoke(KodeinAware.kt:176)
at org.kodein.di.KodeinAwareKt$Instance$1.invoke(Unknown Source:4)
at org.kodein.di.KodeinProperty$provideDelegate$1.invoke(properties.kt:42)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at ga.forntoh.bableschool.ui.base.BaseActivity.getViewModelFactory(Unknown Source:7)
at ga.forntoh.bableschool.ui.base.BaseActivity.onCreate(BaseActivity.kt:38)
at ga.forntoh.bableschool.ui.category.CategoriesActivity.onCreate(CategoriesActivity.kt:34)
at android.app.Activity.performCreate(Activity.java:7327)
at android.app.Activity.performCreate(Activity.java:7318)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3094)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3257)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1948)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7050)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
Gradle
implementation "org.kodein.di:kodein-di-generic-jvm:6.5.0"
implementation "org.kodein.di:kodein-di-framework-android-x:6.5.0"
Application
class App : MultiDexApplication(), KodeinAware {
override val kodein by Kodein.lazy {
import(androidXModule(this@App))
...
Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="ga.forntoh.bableschool">
...
<application
android:name=".App"
...
Activity
open class BaseActivity : ScopedActivity(), KodeinAware {
override val kodein by closestKodein()
private val viewModelFactory: ProfileViewModelFactory by instance()
...
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = ViewModelProvider(this, viewModelFactory).get(ProfileViewModel::class.java)
...
}
...
Issue Analytics
- State:
- Created 4 years ago
- Comments:8 (4 by maintainers)
Top Results From Across the Web
android.app.Application cannot be cast to org.kodein.di ...
I get the following error when the app starts, I've tried to trace it but to no avail 2020-02-17 12:22:18.289 ...
Read more >android.app.Application cannot be cast to android.app.Activity
Wherever you are passing it pass this or ActivityName.this instead. Since you are trying to cast the Context you pass (Application not Activity ......
Read more >Troubleshooting: java.lang.ClassCastException: android.app ...
When running your dagger project you find the error java.lang.ClassCastException: android.app.Application cannot be cast to .
Read more >ClassCastException: Application cannot be cast - Medium
Sometimes, when I add custom Application class into project Android Studio does'nt cast it: ClassCastException: android.app.
Read more >Android app application cannot be cast to - Estate Cambodia
Java.lang.classcastexception android.app.contextimpl cannot be cast to ... Android.app.application cannot be cast to org.kodein.di.kodein aware.
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Maybe you could try to force the
App
class to be use as the application context.override val kodein by lazy { (applicationContext as App).kodein }
At a certain point, I changed to
MultiDexApplication
it kept working.