将数据从第二个活动移到第一个活动

时间:2018-12-13 12:46:06

标签: java android xml kotlin

我有一个活动,该活动的文本为空,您可以单击添加项目以向文本中添加文本,因此当我尝试将第二个Activity的数据添加到主文本时,该应用甚至无法启动。
MainActivity

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val textView1: TextView = findViewById(R.id.num1)
        val textView2: TextView = findViewById(R.id.num2)
        val Button: Button = findViewById(R.id.button)
        val intent = intent
        val message: String = intent.getStringExtra(SecondActivity.EXTRA_MESSAGE)
        textView1.setText(message)
        Button.setOnClickListener(){
            val intent: Intent = Intent(this, SecondActivity::class.java)
            startActivity(intent)
        }
    }

第二活动:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)
        val item = edit.text.toString()
        button.setOnClickListener(){
            val intent = Intent(this, MainActivity::class.java)
            intent.putExtra(EXTRA_MESSAGE , item)
            startActivity(intent)
        }
    }
    companion object {
        val EXTRA_MESSAGE: String =
            "com.example.android.twoactivities.extra.MESSAGE"
    }

4 个答案:

答案 0 :(得分:0)

  

打算在第一次活动之后接收来自第二次活动的数据。
  步骤1:通过将Intent与 startActivityForResult(Intent intent,int REQUEST_CODE)一起使用Intent启动第二活动,您将收到从第二活动发送的数据

val intent:Intent = Intent(this,SecondActivity :: class.java)                 startActivityForResult(intent,101)

  

第2步:打开第二活动,并在要完成第二活动的位置(即要将数据发送到 First活动)   注意:“ KEY”和数据类型传递对于在首次活动

中获得结果很重要
val value : String = "sendBackData"
val intent = Intent()
        resultIntent.putExtra("KEY", value)
        setResult(Activity.RESULT_OK, intent)
        finish()
  

第3步:在第一个活动中。创建覆盖方法 onActivityResult 以使用“ KEY”

将数据导入“第一活动”      

注意:第一个活动的onActivityResult 中的第二个活动中的。 / p>

override fun onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 101 && resultCode == RESULT_Ok && data != null){
     val str : String = data.getStringExtra("KEY")
}
}

答案 1 :(得分:0)

您需要致电

startActivityForResult(intent, request_code) ;

代替

startActivity(intent);

以便在onActivityResult方法中接收响应。

答案 2 :(得分:0)

您好,请使用 id | elem :-------------------------- | ---: GOLDEN oy | 1 gallne | 2 OSETTY EESTAUEA | 3 AIsoR | 4 mloachomgrprgren | 1 LD | 1 a@lokomgrergimi | 1 GOLDON ory OSETTY ESTAUEANT | 1 AIENISORSSA | 2 gal | 3 ,在您的SecondActivty中只需使用

startActivityForResult(intent, requestcode);

重新运行到MainActivity。

答案 3 :(得分:0)

首先,从MainActivity到SecondActivity,您需要使用startActivityForResult()

    val requestCode = 0
    val intent = Intent(this, SecondActivity::class.java)
    intent.putExtra("your key","your value")
    this.startActivityForResult(intent, requestCode)

您声明一个请求代码(一个整数),像现在一样声明意图,然后将关键字放入意图中,并添加额外的内容。 重要部分:您需要将startActivityForResult与您的意图和请求代码一起使用。

现在,在第二个活动中,获取您的意图字符串:

 val string = intent.getStringExtra("your key")

准备返回值时,请使用:

    val resultCode = 1
    val returnIntent = Intent()
    returnIntent.putExtra("your key","your value")
    setResult(resultCode, intent)
    finish()

在创建新意图的地方,将需要放入的东西放入意图附加中,然后将其与setResult一起返回-记住resultCode和requestCode。 finish()用于关闭您当前所在的活动(仅设置结果不会关闭该活动)

最后,在主要活动上,您需要覆盖此方法:

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (requestCode == yourRequestCode){
        if (resultCode == yourResultCode){
            //do something
        }
    }

}