Android Studio Kotlin - Expecting a top level declaration?
Hallo an alle! Bin neu bei Kotlin.
Ich soll zu Übungszwecken eine App in Kotlin programmieren, die ein paar Würfel wirft. Dabei bin ich auf das Problem gestoßen, dass ich an die Ids der ImageViews irgendwie nicht heran kam.
Habe also gegoogelt und einen Beitrag auf der Seite proandroiddev.com gefunden, indem es vermeintlich darum geht, ohne findViewById an die ImageId zu kommen.
Dabei sollte ich per apply plugin zuerst drei Sachen der App hinzufügen. (Siehe Bild)
Hab ich gemacht, aber jetzt meckert Android Studio, dass eine top level declaration erwartet wurde.
Da ich am Smartphone bin, kann ich leider nicht den ganzen Code als Text teilen. Deshalb das ganze unten als Bilder.
Es geht um folgenden Abschnitt.
Das ist der restliche Code:
Irgendwas mache ich falsch. Kann mir hier vielleicht jemand helfen? Google liefert leider keine weiteren Vorschläge.
2 Antworten
Die drei Zeilen stehen für einen veralteten Ansatz, Plugins anzuwenden. So und so gehören sie nicht in den Java-/Kotlin-Code. Es sind Anweisungen für dein Buildtool (Gradle). Der richtige Zielort wäre in deinem Fall also die build.gradle.kts. Der Import muss so aussehen:
plugins {
id("com.android.application")
kotlin("android")
kotlin("android.extensions")
}
Wie du generell DSL für Gradle aktivierst, wird in diesem Artikel beschrieben. Oder du schaust im Gradle Repository je Package. Dort werden auch die Imports für die build.gradle aufgeführt.
Allerdings würde ich doch einmal hinterfragen, ob du das gerade noch wirklich machen musst und dein Problem nicht eigentlich woanders liegt. Überprüfe doch erst einmal, ob dein Button tatsächlich unter der erwarteten ID im activity_main-Layout liegt.
Die Zeilen mit "apply plugin ..." gehören nicht in die Kotlin Source Daten (.kt).
Laut kurzer Recherche gehört das in die Gradle Dateien. https://kotlinlang.org/docs/gradle.html#targeting-multiple-platforms
In der Projektstruktur in Android Studio solltest du das finden:
Du öffnest die Module build.gradle. Der Anfang der Datei sollte im etwa so aussehen:
plugins {
id 'com.android.application'
id 'kotlin-android'
}
Dort fügst du das dritte Plugin "kotlin-android-extensions" ein, sodass es dann so aussieht:
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
}
Nach dem Ändern sollte oben ein blauer Balken auftauchen, wo du dann auf "Sync Now" tippst, damit Gradle ausgeführt wird.
