我想在另一个Activity中从Intent获取一个额外的字符串。这是创建Intent的方法
val intent = Intent(this, Main2Activity::class.java)intent.putExtra("samplename", "abd")startActivity(intent)
val intent = Intent(this, Main2Activity::class.java)
intent.putExtra("samplename", "abd")
startActivity(intent)
字符串我怎样才能在另一个活动中得到这个Intent的值
6kkfgxo01#
找到答案,在下一个练习中,你必须这样做才能获得字符串:
val ss:String = intent.getStringExtra("samplename").toString()
字符串
kiayqfof2#
加载中
val value: String = txt_act_main.text.toString() // or just your stringval intent = Intent(this, SecondActivity::class.java)intent.putExtra("value", value)startActivity(intent)
val value: String = txt_act_main.text.toString() // or just your string
val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("value", value)
字符串//选项2所有内部类都应该实现为Serializable
getIntent().putExtra("complexObject", clickedTitle);
型
获取
var bundle :Bundle ?=intent.extrasvar message = bundle!!.getString("value") // 1var strUser: String = intent.getStringExtra("value") // 2Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
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
隐含(与其他应用程序共享)
val value: String = txt_act_main.text.toString()var intent = Intent()intent.action = Intent.ACTION_SENDintent.putExtra(Intent.EXTRA_TEXT, value)intent.type="text/plain"startActivity(Intent.createChooser(intent,"Share to "))
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 "))
o75abkj43#
可以使用这个代码:
val bundle = intent.extrasvar sampleName: String = ""if (bundle != null) { sampleName = bundle.getString("samplename")}
val bundle = intent.extras
var sampleName: String = ""
if (bundle != null) {
sampleName = bundle.getString("samplename")
}
oyjwcjzk4#
可以检查intent值是否为null
val bundle :Bundle ?=intent.extras if (bundle!=null){ val message = bundle.getString("object") // 1 Toast.makeText(this, message, Toast.LENGTH_SHORT).show() }
val bundle :Bundle ?=intent.extras
if (bundle!=null){
val message = bundle.getString("object") // 1
omqzjyyz5#
在Main2Activity中,你可以像这样编写代码:
val intent = getIntent(); val myValue = intent.getStringExtra("key") Log.d(TAG,"myValue"+myValue)
val intent = getIntent();
val myValue = intent.getStringExtra("key")
Log.d(TAG,"myValue"+myValue)
pinkon5k6#
接受的答案并不能解决Intent不存在的情况。因为当Intent中不存在密钥时,getStringExtra()将给予您null,即使其签名指示String而不是String?。您可以使用val text:String = intent.getStringExtra(intentKey) ?: ""来确保没有发生NPE。但这里还有一个答案:这是针对这样的情况,你尝试从intent中检索字符串,如果值在那里,我们就得到值,否则,它将返回到上一个屏幕,因为这个intent是关键的。会发生错误,但我们不想崩溃的活动。
getStringExtra()
null
String
String?
val text:String = intent.getStringExtra(intentKey) ?: ""
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()}
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")
型文本总是有一个值
lyfkaqu17#
您可以使用这个简单的Kotlin扩展
fun Intent.getData(key: String): String { return extras?.getString(key) ?: "intent is null"}
fun Intent.getData(key: String): String {
return extras?.getString(key) ?: "intent is null"
字符串此扩展检查intent值是否为null,如果值为null,则返回intent为null否则,将返回值这样使用它
val username = intent.getData("username")
vh0rcniy8#
首先你需要初始化intent变量。然后像我们在java中做的那样取出数据:)
val intent: Intent = intentvar data = intent.getStringExtra("mydata")
val intent: Intent = intent
var data = intent.getStringExtra("mydata")
8条答案
按热度按时间6kkfgxo01#
找到答案,在下一个练习中,你必须这样做才能获得字符串:
字符串
kiayqfof2#
加载中
字符串
//选项2所有内部类都应该实现为Serializable
型
获取
型
//可选2
型
隐含(与其他应用程序共享)
型
o75abkj43#
可以使用这个代码:
字符串
oyjwcjzk4#
可以检查intent值是否为null
字符串
omqzjyyz5#
在Main2Activity中,你可以像这样编写代码:
字符串
pinkon5k6#
接受的答案并不能解决Intent不存在的情况。因为当Intent中不存在密钥时,
getStringExtra()
将给予您null
,即使其签名指示String
而不是String?
。您可以使用
val text:String = intent.getStringExtra(intentKey) ?: ""
来确保没有发生NPE。但这里还有一个答案:
这是针对这样的情况,你尝试从intent中检索字符串,如果值在那里,我们就得到值,否则,它将返回到上一个屏幕,因为这个intent是关键的。会发生错误,但我们不想崩溃的活动。
字符串
你可以这样使用它:
型
文本总是有一个值
lyfkaqu17#
您可以使用这个简单的Kotlin扩展
字符串
此扩展检查intent值是否为null,如果值为null,则返回intent为null否则,将返回值
这样使用它
型
vh0rcniy8#
首先你需要初始化intent变量。然后像我们在java中做的那样取出数据:)
字符串