Ответ 1
Ответ найден, в следующем действии вы должны сделать это, чтобы получить строку:
val ss:String = intent.getStringExtra("valor")
Я хочу получить строку в другом упражнении с намерением. Это способ создать мое намерение
val intent = Intent(this, Main2Activity::class.java)
intent.putExtra("samplename", "abd")
startActivity(intent)
Как я могу получить значение этого намерения в другом действии
Ответ найден, в следующем действии вы должны сделать это, чтобы получить строку:
val ss:String = intent.getStringExtra("valor")
НАГРУЗКИ
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)
//опция 2 все внутренние классы должны быть имплантированы в Serializable
getIntent().putExtra("complexObject", clickedTitle);
ПОЛУЧИТЬ
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()
//вариант 2
var myProg = intent.getSerializableExtra("complexObject") as MenuModel
IMPLICIT (Поделиться с другими приложениями)
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 "))
Вы можете проверить, является ли значение намерения нулевым или нет
val bundle :Bundle ?=intent.extras
if (bundle!=null){
val message = bundle.getString("object") // 1
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}
Может использовать этот код:
val bundle=intent.extras
val samplename:String
if(bundle!=null)
{
samplename = bundle.getString("samplename")
}
В Main2Activity вы можете иметь свой код следующим образом:
val intent = getIntent();
val myValue = intent.getStringExtra("key")
Log.d(TAG,"myValue"+myValue)
Принятый ответ не решает случай, когда намерения не существует. Потому что, когда ключ не существует в намерении, getStringExtra()
даст вам null
даже его подпись указывает на String
а не на String?
,
Вы можете использовать val text:String = intent.getStringExtra(intentKey)?: ""
Чтобы убедиться, что NPE не произошло.
Но еще один ответ здесь:
Это относится к случаю, когда вы пытаетесь получить строку из намерения, если значение есть, мы получаем значение, в противном случае оно вернется к предыдущему экрану, потому что это намерение имеет решающее значение. Произойдет что-то не так, но мы не хотим разрушать эту деятельность.
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()
}
Затем вы можете использовать его следующим образом:
val text:String = getStringFromIntentOrShowError("asd")
и текст всегда будет иметь значение