Получение java .lang.ClassCastException Ошибка - PullRequest
0 голосов
/ 17 апреля 2020

Новое в Android разработке. Я не начал работать над своим проектом, и он уже выбрасывает ошибки. Я начал эту тему после прохождения остальных (ни одно из решений не помогло мне). У меня проблемы с поиском ClassCastException. Я только выбрал меню в качестве шаблона по умолчанию и пробовал Google Admobs

MainActivity.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

Один из ответов сказал что я преобразовывал объект одного класса в другой. Но я не вижу, где я делаю ошибку. (Простите только нуб)

1 Ответ

0 голосов
/ 18 апреля 2020

В вашем AndroidManifest.xml у вас есть (или эквивалент):

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

Если вы удалите атрибут

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

, вы избавитесь от крэя sh. Это происходит сбой, потому что он пытается создать экземпляр MainActivity как объект приложения, поскольку вы ошибочно заявили, что он должен это сделать. topi c, поэтому обязательно сделайте это :) https://developer.android.com/guide/topics/manifest/manifest-intro

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...