Je veux obtenir une chaîne supplémentaire dans une autre activité à partir d'une intention. C'est le moyen de créer mon intention
val intent = Intent(this, Main2Activity::class.Java)
intent.putExtra("samplename", "abd")
startActivity(intent)
Comment puis-je obtenir la valeur de cette intention dans une autre activité
Réponse trouvée, dans l'activité suivante, vous devez faire ceci pour obtenir la chaîne:
val ss:String = intent.getStringExtra("valor")
CHARGE
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 toutes les classes internes doivent être implenet à Serializable
getIntent().putExtra("complexObject", clickedTitle);
GET
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
IMPLICIT (à partager avec d'autres applications)
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 "))
vous pouvez vérifier si la valeur d'intention est nulle ou non
val bundle :Bundle ?=intent.extras
if (bundle!=null){
val message = bundle.getString("object") // 1
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}
Peut utiliser ce code:
val bundle=intent.extras
val samplename:String
if(bundle!=null)
{
samplename = bundle.getString("samplename")
}
La réponse acceptée ne résout pas le cas où l'intention n'est pas là. Parce que lorsque la clé n’existe pas intentionnellement, getStringExtra()
vous donnera null
même sa signature indique un String
plutôt que un String?
.
Vous pouvez utiliser val text:String = intent.getStringExtra(intentKey) ?: ""
pour vous assurer qu'aucun événement NPE ne s'est produit.
Mais encore une réponse ici:
C'est pour le cas où, vous essayez de récupérer la chaîne de l'intention, si la valeur est là, nous obtenons la valeur, sinon, elle retournera à l'écran précédent car cette intention est essentielle. Quelque chose ne va pas, mais nous ne voulons pas bloquer l'activité.
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()
}
Ensuite, vous pouvez l'utiliser comme ceci:
val text:String = getStringFromIntentOrShowError("asd")
et le texte aura toujours une valeur
Dans Main2Activity, vous pouvez avoir votre code comme ceci:
val intent = getIntent();
val myValue = intent.getStringExtra("key")
Log.d(TAG,"myValue"+myValue)