Kotlin中如何使用putextra()

How to use putextra () in Kotin

我想从 Sub-Activity1 的“编辑文本部分”发送数据(数字)(用户输入一个简单的数字)并在另一个 Sub-activity2 中接收,这取决于我想要的数字显示不同的文本集。我是初学者,我被困在 Sub-Activity 2 中,因为 val str 出现 returns 错误,我想在其中接收和操作从 Sub-Activity 收到的数字1 editText.

亚Activity 1 : <发送并打开子-Activity2>

getResult.setOnClickListener {
            val intent = Intent(this, subactivity::class.java)
            val name:  String = editTextID.getText().toString()
            intent.putExtra(name:"editTextID",value:"7.0")
            startActivity(intent)

这个returns没有错误。

Sub-Activity 2: <接收和操作文本>

class subactivity2 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_subactivity2)
        val str =intent.getStringExtra("editTextID")
        when str == 7.0 {
            infoTextView.textview.text= "textIwannaShow"
        }
    }

在您的 Sub-Activity 2 中,您收到的是 String 而不是 Integer

因此,您应该更改此代码

val str =intent.getStringExtra("editTextID")

对此

val str =intent.getIntExtra("editTextID", 0)

无论如何,在示例中您传递的 7.0Double,因此您可能需要这个而不是上面的代码

val str =intent.getDoubleExtra("editTextID", 0.0)

Franz 关于您想要传递 Double 的说法可能是正确的,但是由于您将其作为 String 传递并且还将您的 val 命名为 str,我假设您确实想传递一个字符串(恰好代表一个数字)。在这种情况下,您需要与字符串进行比较

if (str == "7.0") {
    infoTextView.textview.text = "textIwannaShow"
}

或者如果您确实想要 when

when(str) {
    "7.0" -> infoTextView.textview.text = "textIwannaShow"
}

如果您真的想使用数字,您必须在某个时候对您的字符串调用 toDouble() 以将其转换为一个。 toDoubleOrNull 如果您从文本输入中获取该数字会更好(以防用户未输入有效数字),但您实际上并没有使用从 EditText 中获取的值