如何在Android应用程序中将数据从一项活动传递到另一项活动

时间:2019-05-07 21:59:52

标签: android kotlin

我正在尝试创建一个简单的应用程序,您可以在其中通过editText在一个活动中键入数据,并在TextView的另一个活动中显示该数据。但是我真的不知道如何使它工作。如您所见,这是简单的代码,但是现在当我单击“提交”时,其他活动没有任何反应。 这是第一项活动

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
    fun switchToActivity (view: View){
        val myIntent = Intent(this, Main2Activity::class.java)
        startActivity(myIntent)
    }
    override fun onActivityResult(requestCode: Int,
                                  resultCode: Int,
                                  myInten: Intent?) {
        var text2 = myInten?.getStringExtra("text")
        textView.setText(text2)
    }
}

这是第二个

class Main2Activity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
    }
    fun buttonListener (view: View){
        var text = editText.text.toString()

        val myIntent = Intent()
        myIntent.putExtra("textView", text)
        setResult(Activity.RESULT_OK, myIntent)
        finish()
    }
}

2 个答案:

答案 0 :(得分:2)

您的代码有2个问题。

首先,要接收其他活动的结果,必须使用startActivityForResult()

fun switchToActivity (view: View){
    val myIntent = Intent(this, Main2Activity::class.java)
    startActivityForResult(myIntent)
}

第二,保存和检索结果时必须使用相同的密钥。

var text2 = myInten?.getStringExtra("textView")

放在一起。

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    fun switchToActivity (view: View){
        val myIntent = Intent(this, Main2Activity::class.java)
        startActivityForResult(myIntent)
    }

    override fun onActivityResult(requestCode: Int,
                                  resultCode: Int,
                                  myInten: Intent?) {
        var text2 = myInten?.getStringExtra("textView")
        textView.setText(text2)
    }
}

答案 1 :(得分:0)

您应该使用:startActivityForResult(myIntent) 而不是:startActivity(myIntent)