Forum: PC-Programmierung Kotlin & setOnClickListener


von Alex -. (zehvierundsechzig)


Lesenswert?

Hallo Community! ... und ja ich habe gegoogelt :) ... reichlich ...

Ich möchte im Android Studio lediglich durch Click auf einen Button eine 
neue Aktivität öffnen.
In allen schriftlichen Tutorials und YT Videos kommt der Vorschlag 
'setOnClickListener' automatisch, nachdem 'buttonXY.' getippt wurde.
Bei mir leider nicht. Ergo erhalte ich Fehlermeldungen: "Expecting 
member declaration"

- Nachdem ich erst versucht hatte das Problem in meinem aktuellen 
Projekt zu fixen, habe ich ein komplett neue Projekt aufgemacht und step 
by step Tutorials nachgearbeitet. Funktionierte nicht. 'Fehler' blieb
- OK dachte ich mir: Vielleicht ist bei der Installation vom Android 
Studio was schief gelaufen (irgendwelche Verweise, Pfade, 
weissderGeier). Also Android Studio neu installiert und mit einem 
frischen Projekt wieder angefangen. Das Verhalten bleibt leider das 
Gleiche.

Hat Jemand eine Idee warum bei mir - nach dem tippen des Punktes - nicht 
der Vorschlag erscheint?

von 🐧 DPA 🐧 (Gast)


Lesenswert?

Du verstehst, warum du Methoden wie z.B. setOnClickListener verwenden 
kannst?
Die sind immer irgendwo definiert. Schau dir den Typ 
(Klassen/Interfaces) an, die das Objekt hat, auf dem du die aufrufen 
willst und eventuell deren API Dokumentation. Hat eine davon die 
Methode? Wenn nicht, dann geht es deshalb nicht, dann ist es halt nicht 
da.

Dafür kann es viele Gründe geben. Vielleicht gab es die Funktion in 
einer älteren Version des Packages mal, wurde aber entfernt oder durch 
eine andere Ersetzt. Oder vielleicht hast du als typ irgendwo eine 
parent Klasse oder ein Interface als Typ angegeben, die das Objekt zwar 
hat und von der Typisierung her kompatibel ist, aber die Methode nicht 
hat, und deshalb weiss der Compiler einfach nicht, dass das ginge.

Es kann natürlich auch sein, dass das Tutorial falsch ist, also etwas 
darin fehlt, anders gemacht oder weggelassen wurde. So eins wird wohl 
kaum in einer Session und ohne Nachbearbeitung gemacht.

So oder so, am ende läuft es daraus hinaus, dass du mehr im Detail 
verstehen musst, was du da gerade machst, was warum passieren sollte, 
und warum das nicht geht. Dann kannst du dir überlegen, wie du das 
Problem lösen könntest, was du anders machen, korrigieren oder 
hinzufügen könntest. Nicht damit es wieder so aussieht wie im Tutorial, 
sondern so, das es das Tut was du willst / was es soll.


PS: Die Autovervollständigung ist normalerweise ein Feature der IDE. 
Diese kann auch manchmal falsch oder unvollständig sein.

von Lukas T. (tapy)


Lesenswert?

AndroidStudio ist gelegentlich interessant.
Wie sieht denn der Ansatz aus?
So in etwa?
1
// Hier einfach mal den Button oder was auch immer suchen
2
val dieserButton = view.findViewById<Button>(R.id.dieserButtonSeinName)
3
// Dann dem Button eine Funktion verpassen
4
dieserButton.setOnClickListener {
5
    // Dieser Kram wird dann bei Klick ausgeführt.
6
    // Bspw. eine neue Aktivität öffnen
7
}

Edit:
1
import android.view.View
2
import android.view.ViewGroup
3
import android.widget.Button
... und so.
Normalerweise schlägt die IDE den Import direkt vor, wenn was fehlt.

: Bearbeitet durch User
von Alex -. (zehvierundsechzig)


Lesenswert?

@ DPA:
Vielen Dank für deine Antwort und ja: Knowledgetechnisch habe ich noch 
viel Nachholbedarf. Bin sozusagen ein richtiges Greenhorn.
>>So oder so, am ende läuft es daraus hinaus, dass du mehr im Detail
>>verstehen musst, was du da gerade machst,

I'm trying hard but I'm totally lost~~ Dachte es kann ja nicht so schwer 
sein einen zweiten Dialog zu öffnen. Im Grunde ist es ja nicht viel mehr 
als ein "Hallo Welt"

@Lukas T.:
Ja! Genau so sind die Beispiele...
Leider schlägt die IDE mir eben keinen adäquaten Lösungsansatz vor.

Ich werde wohl dem Rat von DPA folgen und mir erstmal weitere Basics 
aneignen bevor so anspruchsvolle Dinge an der Reihe sind, wie einen 
weiteren Dialog zu öffnen lol

Danke euch !
--

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.