android 从活动Kotlin获取字符串额外

polhcujo  于 2024-01-04  发布在  Android
关注(0)|答案(8)|浏览(147)

我想在另一个Activity中从Intent获取一个额外的字符串。这是创建Intent的方法

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

字符串
我怎样才能在另一个活动中得到这个Intent的值

6kkfgxo0

6kkfgxo01#

找到答案,在下一个练习中,你必须这样做才能获得字符串:

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

字符串

kiayqfof

kiayqfof2#

加载中

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

字符串
//选项2所有内部类都应该实现为Serializable

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

获取

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


//可选2

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

隐含(与其他应用程序共享)

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

展开查看全部
o75abkj4

o75abkj43#

可以使用这个代码:

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

字符串

oyjwcjzk

oyjwcjzk4#

可以检查intent值是否为null

  1. val bundle :Bundle ?=intent.extras
  2. if (bundle!=null){
  3. val message = bundle.getString("object") // 1
  4. Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
  5. }

字符串

omqzjyyz

omqzjyyz5#

在Main2Activity中,你可以像这样编写代码:

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

字符串

pinkon5k

pinkon5k6#

接受的答案并不能解决Intent不存在的情况。因为当Intent中不存在密钥时,getStringExtra()将给予您null,即使其签名指示String而不是String?
您可以使用val text:String = intent.getStringExtra(intentKey) ?: ""来确保没有发生NPE。
但这里还有一个答案:
这是针对这样的情况,你尝试从intent中检索字符串,如果值在那里,我们就得到值,否则,它将返回到上一个屏幕,因为这个intent是关键的。会发生错误,但我们不想崩溃的活动。

  1. private fun getStringFromIntentOrShowError(intentKey: String):String {
  2. val text:String? = intent.getStringExtra(intentKey)
  3. if (text == null) {
  4. showDialog(
  5. "Error",
  6. "No $intentKey found"
  7. ) {
  8. it.dismiss()
  9. finish()
  10. }
  11. return ""
  12. }
  13. return text
  14. }
  15. // I use anko to show a dialog, you can use your one.
  16. private fun showDialog(
  17. title:String,
  18. message:String,
  19. yesButtonCallback: (d:DialogInterface) -> Unit
  20. ) {
  21. alert(message, title){ yesButton{
  22. yesButtonCallback(it)
  23. } }.show()
  24. }

字符串
你可以这样使用它:

  1. val text:String = getStringFromIntentOrShowError("asd")


文本总是有一个值

展开查看全部
lyfkaqu1

lyfkaqu17#

您可以使用这个简单的Kotlin扩展

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

字符串
此扩展检查intent值是否为null,如果值为null,则返回intent为null否则,将返回值
这样使用它

  1. val username = intent.getData("username")

vh0rcniy

vh0rcniy8#

首先你需要初始化intent变量。然后像我们在java中做的那样取出数据:)

  1. val intent: Intent = intent
  2. var data = intent.getStringExtra("mydata")

字符串

相关问题