So greifen Sie in Kotlin auf Werte von Android “strings.xml” zu

Lesezeit: 3 Minuten

Benutzeravatar von Dheeraj
Dheeraj

Wie kann ich auf Werte von Android zugreifen Zeichenfolgen.xml mit Kotlin?

class MainActivity : AppCompatActivity(), View.OnClickListener {
    override fun onClick(p0: View?) {
        getToastCalled("")
        TODO("not implemented")
    }

    private fun getToastCalled(message: String) {
        TODO("not implemented")
    }

    var btn: Button? = null;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        var tv_name=findViewById(R.id.tv) as TextView
        btn=findViewById(R.id.button) as Button
        tv_name.setText(KtTest().name);
        (btn as Button).setOnClickListener(MainActivity@this)
    }
}

  • Genau wie in Java.

    – nhaarman

    2. Juli 2017 um 13:59 Uhr

  • Sie haben in Ihrem Beispiel bereits auf Layouts und IDs verwiesen. Denken Sie auch daran, dass Sie Java-Dateien mit Strg + Umschalt + Alt + K in Kotlin konvertieren können. Auf kotl.in ist auch eine umfangreiche Dokumentation zu Methoden verfügbar

    – Allan W

    3. Juli 2017 um 1:54 Uhr

  • vielen dank für die hilfe..

    – Dheeraj

    24. September 2017 um 15:34 Uhr

Robins Benutzeravatar
Robin

Der Zugriff auf Zeichenfolgenwerte in Kotlin funktioniert genauso wie in Java, nur mit der Kotlin-Syntax:

val string: String = getString(R.string.your_string_id)

(Dies setzt voraus, dass sich Ihr Code in einem Android befindet Activityoder eine ähnliche Klasse, die von erbt Context. Wenn nicht, müssen Sie eine bekommen Context Beispiel von irgendwo, und ändern Sie es in myContext.getString(...).)

  • Dies könnte produzieren Null

    – IgorGanapolsky

    23. Oktober 2018 um 17:34 Uhr

  • @IgorGanapolsky Nun ja, technisch könnte es, aber das ist ein Programmierfehler oder etwas stimmt mit dem Build-Prozess nicht, wenn dies der Fall ist. Dieser Aufruf, der null zurückgibt, ist nicht etwas, von dem Sie sich auf sinnvolle Weise erholen könnten, also wird null hier in Java nie überprüft, und Sie müssen es glücklicherweise auch nicht in Kotlin.

    – Robin

    23. Oktober 2018 um 20:12 Uhr

  • Ich habe versucht, diese Funktion zu verwenden, Android Studio konnte sie nicht einmal finden

    – Vogelbeere

    6. April 2020 um 2:31 Uhr

  • @Vogelbeere getString definiert ist Context. Mein Beispielcode wurde unter der Annahme geschrieben, dass Sie sich in einem Android befinden Activitydie erbt von Contextaber wenn Sie es woanders brauchen, müssen Sie eine haben Context irgendwo erhältlich. Sie müssen das Beispiel ändern myContext.getString(...) In diesem Fall. (Haftungsausschluss – habe schon lange keine Android-Entwicklung mehr gemacht, Details könnten sich geändert haben)

    – Robin

    6. April 2020 um 13:32 Uhr

  • @Robin ja, ich habe das herausgefunden, nachdem ich meinen Kommentar geschrieben hatte, habe versucht, es in einer Objektklasse zu tun, wurde nur nicht explizit angegeben

    – Vogelbeere

    7. April 2020 um 0:34 Uhr

Benutzeravatar von Prat137
Prat137

Wenn Sie dann außerhalb von oncreate darauf zugreifen

    Resources.getSystem().getString(R.string.btn_yes)  

Benutzeravatar von Dhivysh
Dhivysch

Wenn Sie auf das gesamte Array zugreifen müssen:

val data= resources.getStringArray(R.array.array_id)

Wenn es hilft, habe ich es so gemacht – Sie benötigen den Anwendungskontext und auch den Import der R-Klasse

applicationContext.getString(R.string.text_string)
import com.example.yourpackagename.R

Um strings.xml in meinem Code zu verwenden, gehe ich wie folgt vor:
textView.text = "${getString(R.string.my_text)}"

Benutzeravatar von Ola Ström
Ola Strom

@Robins Antwort hat fast für mich funktioniert, aber wenn ich nicht hinzufüge this.resources Vor dem getString(R.string.tv) meine App stürzt einfach immer ab.

Um also innerhalb von auf einen Zeichenfolgenwert zuzugreifen Zeichenfolgen.xml Datei in Kotlin verwenden:
this.resources.getString(R.string.tv)

Oder einfach:
resources.getString(R.string.tv)

Benutzeravatar von zaerymoghaddam
zaerymoghaddam

Verwenden Sie das Format – R.string.string_name

Verweisen Sie explizit darauf, zum Beispiel:

R.string.loadingText,

Angenommen, Ihre XML-Datei enthält Folgendes als Teil der Ressourcen:

<string name="loadingText">The actual text to be displayed</string>

  • Gibt dies nicht die Integer-ID dieser XML-Zeichenfolge zurück und nicht den Inhalt der Zeichenfolge selbst?

    – Marios Yiannakou

    12. Juli 2021 um 14:20 Uhr

1432170cookie-checkSo greifen Sie in Kotlin auf Werte von Android “strings.xml” zu

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

Privacy policy