Holen Sie sich String extra von Aktivität Kotlin

Lesezeit: 3 Minuten

Benutzer-Avatar
zasaz

Ich möchte in einer anderen Aktivität eine zusätzliche Zeichenfolge aus einer Absicht erhalten. Dies ist der Weg, um meine Absicht zu erstellen

        val intent = Intent(this, Main2Activity::class.java)
        intent.putExtra("samplename", "abd")
        startActivity(intent)

Wie kann ich den Wert dieser Absicht in einer anderen Aktivität erhalten?

  • Sie können es in einer anderen Aktivität von erhalten Intentz.B: activity.intent.getExtraString("samplename")

    – Holi-Java

    16. Juli 2017 um 20:06 Uhr

  • Bei einer anderen Tätigkeit? Ist es Main2Activity oder irgendeine Aktivität?

    – Mibac

    16. Juli 2017 um 20:15 Uhr

  • die Absicht geht an Main2Activity

    – zasaz

    16. Juli 2017 um 20:23 Uhr

  • Willst du bekommen samplename aus Main2Activity oder eine andere Klasse?

    – Mibac

    16. Juli 2017 um 20:39 Uhr

  • Diese Absicht ist in der MainActivity, was ich tun möchte, ist die Absicht zu erstellen und die Zeichenfolge extra in Main2Activity zu erhalten

    – zasaz

    16. Juli 2017 um 20:46 Uhr

Benutzer-Avatar
zasaz

Antwort gefunden, in der nächsten Aktivität müssen Sie dies tun, um die Zeichenfolge zu erhalten:

val ss:String = intent.getStringExtra("samplename").toString()

  • Was ist “Tapferkeit”?

    – Geoff Langenderfer

    26. April 2020 um 21:28 Uhr

  • Bearbeitet. Der Name von StringExtra wurde geändert

    – zasaz

    27. April 2020 um 18:11 Uhr

  • gleichwertig intent.extras.getString("samplename")?

    – Geoff Langenderfer

    27. April 2020 um 23:48 Uhr

  • Ja das ist richtig. samplename Dies ist ein Name, den ich verwende, um diese Absicht zu identifizieren und den Wert in der nächsten Aktivität abzufangen. Sorry für die Verwirrung

    – zasaz

    28. April 2020 um 19:30 Uhr

  • Wie können Sie die Absicht aus dem vorherigen Wert aufrufen, wenn Sie sie nicht deklariert haben?

    – JASKIER

    13. Januar 2021 um 16:41 Uhr

Benutzer-Avatar
Samir

BELASTUNG

val value: String = txt_act_main.text.toString() // or just your string
val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("value", value)
startActivity(intent)

// Option 2 Alle inneren Klassen sollten in Serializable implementiert werden

   getIntent().putExtra("complexObject", clickedTitle);

ERHALTEN

var bundle :Bundle ?=intent.extras
var message = bundle!!.getString("value") // 1
var strUser: String = intent.getStringExtra("value") // 2
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()

//Option 2

 var myProg = intent.getSerializableExtra("complexObject") as MenuModel

IMPLIZIT (Zum Teilen mit anderen Apps)

val value: String = txt_act_main.text.toString()
var intent = Intent()
intent.action = Intent.ACTION_SEND
intent.putExtra(Intent.EXTRA_TEXT, value)
intent.type="text/plain"
startActivity(Intent.createChooser(intent,"Share to "))

Benutzer-Avatar
Ahmad Aghazadeh

Kann diesen Code verwenden:

val bundle = intent.extras
var sampleName: String = ""
if (bundle != null) {
    sampleName = bundle.getString("samplename")
}

Sie können überprüfen, ob der Absichtswert null ist oder nicht

val bundle :Bundle ?=intent.extras
    if (bundle!=null){
        val message = bundle.getString("object") // 1

        Toast.makeText(this, message, Toast.LENGTH_SHORT).show()

    }

Benutzer-Avatar
Albert Gao

Die akzeptierte Antwort löst den Fall nicht, in dem die Absicht nicht vorhanden ist. Denn wenn der Schlüssel nicht in Absicht existiert, getStringExtra() werde dir geben null sogar seine Unterschrift weist auf a hin String eher als ein String?.

Sie können verwenden val text:String = intent.getStringExtra(intentKey) ?: "" um sicherzustellen, dass kein NPE passiert ist.

Aber hier noch eine Antwort:

Dies gilt für den Fall, dass Sie versuchen, die Zeichenfolge aus der Absicht abzurufen. Wenn der Wert vorhanden ist, erhalten wir den Wert, andernfalls kehren wir zum vorherigen Bildschirm zurück, da diese Absicht kritisch ist. Es wird etwas schief gehen, aber wir wollen die Aktivität nicht zum Absturz bringen.

private fun getStringFromIntentOrShowError(intentKey: String):String {
    val text:String? = intent.getStringExtra(intentKey)

    if (text == null) {
        showDialog(
            "Error", 
            "No $intentKey found"
        ) {
            it.dismiss()
            finish()
        }
        return ""
    }

    return text
}

// I use anko to show a dialog, you can use your one.
private fun showDialog(
    title:String,
    message:String,
    yesButtonCallback: (d:DialogInterface) -> Unit
) {
    alert(message, title){ yesButton{
            yesButtonCallback(it)
    } }.show()
}

Dann kannst du es so verwenden:

val text:String = getStringFromIntentOrShowError("asd")

und Text wird immer einen Wert haben

Benutzer-Avatar
kukroid

In Main2Activity können Sie Ihren Code so haben:

    val intent = getIntent();
    val myValue = intent.getStringExtra("key")
    Log.d(TAG,"myValue"+myValue)

Benutzer-Avatar
Jimale Abdi

Sie können diese einfache Kotlin-Erweiterung verwenden

fun Intent.getData(key: String): String {
    return extras?.getString(key) ?: "intent is null"
}

Diese Erweiterung prüft, ob der Absichtswert null ist, wenn der Wert null ist, wird sie zurückgegeben Absicht ist null Andernfalls wird der Wert zurückgegeben

benutze es so

val username = intent.getData("username")

1205090cookie-checkHolen Sie sich String extra von Aktivität Kotlin

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

Privacy policy