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

时间:2017-07-16 19:49:44

标签: android kotlin

我想从意图中获取另一个活动中的字符串。这是创建我的意图的方法

while (package_count < packets):
  package_count += 1
  s.send(eth_header+eth_payload)
  sleep(delay)

如何在另一项活动中获得此意图的价值

8 个答案:

答案 0 :(得分:25)

答案发现,在下一个活动中,你必须这样做才能获得字符串:

val ss:String = intent.getStringExtra("valor")

答案 1 :(得分:9)

LOAD

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所有内部类都应该是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

IMPLICINT(与其他应用共享)

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 "))

答案 2 :(得分:4)

可以使用此代码:

val bundle=intent.extras
val samplename:String
if(bundle!=null)
{
    samplename = bundle.getString("samplename")
}

答案 3 :(得分:4)

您可以检查意图值是否为空

val bundle :Bundle ?=intent.extras
    if (bundle!=null){
        val message = bundle.getString("object") // 1

        Toast.makeText(this, message, Toast.LENGTH_SHORT).show()

    }

答案 4 :(得分:3)

接受的答案并不能解决意图不存在的情况。因为当意图中不存在密钥时,getStringExtra()会为您提供null,即使其签名也表示String而不是String?

您可以使用val text:String = intent.getStringExtra(intentKey) ?: ""确保没有发生NPE。

但是还有一个答案:

这是针对以下情况:您尝试从intent中检索字符串,如果值在那里,我们获取值,否则,它将返回到上一个屏幕,因为此意图很关键。会发生错误,但我们不想让活动崩溃。

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")

和文本将始终具有值

答案 5 :(得分:2)

您可以使用此简单的Kotlin扩展

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

此扩展程序检查intent值是否为null,如果该值为null,则将返回 intent为null ,否则,它将返回该值

像这样使用它

val username = intent.getData("username")

答案 6 :(得分:1)

在Main2Activity中,您可以使用以下代码:

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

答案 7 :(得分:1)

首先,您需要初始化intent变量。 然后像在Java中一样取出数据:)

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