Wie greife ich in Kotlin auf “Activity.this” zu?

Lesezeit: 3 Minuten

Benutzer-Avatar
Rado

Ich habe dieses Stück Java-Code:

MaterialDialog builder = new MaterialDialog.Builder(MainActivity.this)

Ich möchte das MainActivity-Objekt in Kotlin abrufen. Die automatische Konvertierung bricht bei ab MainActivity.this.

  • Vielleicht this as MainActivity?

    – Marc Plano-Lesay

    12. Januar 2017 um 15:34 Uhr

  • Und wenn dieser Code nicht drin ist MainActivitydann welche Instanz von MainActivity ist es verbunden (und wie)? Als welche Instanz möchten Sie zugreifen this?

    – Hotkey

    12. Januar 2017 um 15:34 Uhr

  • Der funktionierende Java-Code verweist nur auf die activity.this, also eine statische? Ich bin mir nicht sicher.

    – Rado

    12. Januar 2017 um 16:50 Uhr

  • Befindet sich der funktionierende Java-Code auch in einer völlig separaten Datei?

    – Junge

    12. Januar 2017 um 20:12 Uhr

  • Wie heißt dieser Code, wenn nicht in MainActivity aber trotzdem Gießen this zu MainActivity? In einer Nebenklasse vielleicht?

    – Marc Plano-Lesay

    13. Januar 2017 um 7:18 Uhr


Benutzer-Avatar
mfulton26

Sie können einen Verweis auf Ihre erhalten MainActivity Objekt in Kotlin mit a qualifiziert this. z.B:

class MyActivity : MainActivity() {
    val builder = MaterialDialog.Builder([email protected])
}

  • Wie wäre es mit Fragment? Ich habe Context in Fragment (with @ActivityContext Attribut), jetzt brauche ich Activity. Natürlich weiß ich Bescheid getActivity() (Kotlin activity) im Fragment, aber ist der zweite Weg in Ordnung oder da ich Kontext habe, ist es besser, ihn für den Zugriff auf die Aktivität zu verwenden?

    – Dr.jacky

    24. August 2018 um 15:37 Uhr


  • @Dr.jacky Ich denke, Sie können ‘(Kontext als? YourActivity)’ umwandeln. Jetzt können Sie auf Ihre Aktivitätsmethoden zugreifen

    – jan4co

    13. Februar 2019 um 19:47 Uhr

  • @siddarth-g Wenn Sie ein Problem mit ungelösten Referenzen haben, empfehle ich, eine neue Frage mit einem MCVE zu erstellen, um Hilfe zu erhalten.

    – mfulton26

    27. Dezember 2019 um 14:17 Uhr


  • @mfulton26 Es ist kein Kompilierungsproblem. [email protected] hat bei mir auch in einem anderen Projekt nicht funktioniert.

    – Siddarth G

    26. Juli 2020 um 8:40 Uhr

Benutzer-Avatar
Die Bala

Versuchen Sie es stattdessen mit diesem Label

[email protected]

  • ungelöste Referenz

    – Siddarth G

    26. Dezember 2019 um 13:57 Uhr

  • Es kompiliert nicht

    – IgorGanapolsky

    3. Februar 2020 um 20:13 Uhr

  • @IgorGanapolsky ändern Sie den Aktivitätsnamen in Ihren Aktivitätsnamen -_-

    – Grecha

    15. April 2020 um 15:41 Uhr

  • @SiddarthG stelle sicher, dass deine innere Klasse mit “inner” markiert ist, das war mein Problem

    – Glaskanone

    2. April 2021 um 19:41 Uhr

Benutzer-Avatar
Caner

Antwort ist: [email protected]ätsname

Zum Beispiel: Sie sollten es verwenden, wenn Sie “Context” in MainActivity.kt definieren möchten

var mContext:Context = [email protected]

Wieso den? Weil @ in der Kotlin-Sprache „von“ bedeutet, wie zum Beispiel:

val a = [email protected] // A's this

Wenn Sie weitere Informationen erhalten möchten, können Sie die Website von Kotlin Language besuchen:
Dieser Ausdruck in Kotlin

Wenn Sie Activity.this aus einer inneren Klasse aufrufen, müssen Sie put innere vor der Klasse

class MyActivity : MainActivity() {
    // Call from class itself
    val builder = MaterialDialog.Builder([email protected]) 

    inner class Inner {
        [email protected] // Call from the inner class 
    }
}

In Kotlin

[email protected]

entspricht JAVA

MainActivity.this

Benutzer-Avatar
Shivam Yadav

So wie Sie es in Java tun, um den Kontext der Aktivität als MainActivtiy.this zu erhalten, erhalten Sie in Kotlin den Kontext als [email protected]

Benutzer-Avatar
Fräulein Chanander Bong

getActivity() Äquivalent ist [email protected]_name
im Fall von builder für materialDialog

materialDialog = MaterialDialog.Builder(this)

1344890cookie-checkWie greife ich in Kotlin auf “Activity.this” zu?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy