获取java.lang.ClassCastException错误



Android开发的新手。我还没有开始我的项目,它已经抛出了错误。我在完成了剩下的部分之后开始了这个线程(没有一个解决方案对我有效(。我在查找ClassCastException时遇到问题。我只选择了菜单作为默认模板,并尝试了谷歌Admobs

主要活动.kt

class MainActivity : AppCompatActivity() {
private lateinit var appBarConfiguration: AppBarConfiguration
lateinit var mAdView : AdView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Google Ad-mobs Code
setContentView(R.layout.activity_main)
MobileAds.initialize(this)
mAdView = findViewById(R.id.adView)
val adRequest = AdRequest.Builder().build()
mAdView.loadAd(adRequest)
// Code for the menu
val toolbar: Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
val navView: NavigationView = findViewById(R.id.nav_view)
val navController = findNavController(R.id.nav_host_fragment)
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
appBarConfiguration = AppBarConfiguration(setOf(
R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow), drawerLayout)
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.main, menu)
return true
}
override fun onSupportNavigateUp(): Boolean {
val navController = findNavController(R.id.nav_host_fragment)
return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
}
}

LogCat

Process: com.albertjokelin.revise, PID: 10460
java.lang.RuntimeException: Unable to instantiate application com.albertjokelin.revise.MainActivity: java.lang.ClassCastException: com.albertjokelin.revise.MainActivity cannot be cast to android.app.Application
at android.app.LoadedApk.makeApplication(LoadedApk.java:1226)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6431)
at android.app.ActivityThread.access$1300(ActivityThread.java:219)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1859)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: java.lang.ClassCastException: com.albertjokelin.revise.MainActivity cannot be cast to android.app.Application
at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76)
at androidx.core.app.CoreComponentFactory.instantiateApplication(CoreComponentFactory.java:52)
at android.app.Instrumentation.newApplication(Instrumentation.java:1148)
at android.app.LoadedApk.makeApplication(LoadedApk.java:1218)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6431) 
at android.app.ActivityThread.access$1300(ActivityThread.java:219) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1859) 
at android.os.Handler.dispatchMessage(Handler.java:107) 
at android.os.Looper.loop(Looper.java:214) 
at android.app.ActivityThread.main(ActivityThread.java:7356) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
2020-04-18 11:12:28.865 10460-10460/com.albertjokelin.revise I/Process: Sending signal. PID: 10460 SIG: 9

其中一个答案是,我一直在将一个类的对象转换为另一个类。但我不知道我在哪里犯了错误。(抱歉只是一个角落(

在您的AndroidManifest.xml中,您有以下(或等效(:

<application
android:name="com.albertjokelin.revise.MainActivity"
...

如果删除属性

android:name="com.albertjokelin.revise.MainActivity"

你会摆脱车祸的。它崩溃是因为它试图将MainActivity实例化为应用程序对象,因为您错误地声明它应该这样做。

既然你说你是一个傻瓜,我想你还没有阅读过以下关于这个主题的文档,所以请确保这样做:(https://developer.android.com/guide/topics/manifest/manifest-intro