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
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
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 "))
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()
}
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
kukroid
In Main2Activity können Sie Ihren Code so haben:
val intent = getIntent();
val myValue = intent.getStringExtra("key")
Log.d(TAG,"myValue"+myValue)
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")
12050900cookie-checkHolen Sie sich String extra von Aktivität Kotlinyes
Sie können es in einer anderen Aktivität von erhalten
Intent
z.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
ausMain2Activity
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