美文网首页
启动并接收Activity返回数据

启动并接收Activity返回数据

作者: ZYiDa | 来源:发表于2019-04-16 14:28 被阅读0次

有这样一个场景:需要当前Activity启动另一个Activity,并接收该Activity返回数据。
为了获取被启动Activity返回的数据,需要做下面两个操作:

  • 1- 当前Activity需要重新写onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)方法,当被启动的Activity返回时,会触发这个方法,其中requestCode是请求码,resultCode是返回的 结果码。这些个都可以由业务需求来指定。
  • 2- 被启动的Activity需要调用setResult()设置处理结果

具体如下

当前Activity
const val REQUEST_CODE = 1019
const val RESULT_CODE = 1018

class MainActivity : Activity() {

    private var showLabel:TextView? = null

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

        showLabel = findViewById(R.id.topshowlabel)
        val btn = findViewById<Button>(R.id.btnclick)
        btn.setOnClickListener {
        //启动指定Activity并等待返回结果,其中REQUEST_CODE是请求码,用于标识该请求
      startActivityForResult(Intent(this@MainActivity,SelectedInfoActivity::class.java),REQUEST_CODE)
        }
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        //处理特定的结果
        if (requestCode == REQUEST_CODE && resultCode == RESULT_CODE){
            showLabel!!.text = data!!.extras.get("value").toString()
        }
    }
}
被启动的Activity
listview.onItemClickListener = AdapterView.OnItemClickListener { parent, view, position, id ->
            val msg = "第 $position 条数据"
            val intentt = intent
            intentt.putExtra("value",msg)
            //设置结果码 并设置借宿之后要回退的Activity
            this@SelectedInfoActivity.setResult(RESULT_CODE,intentt)
            this@SelectedInfoActivity.finish()
        }

相关文章

网友评论

      本文标题:启动并接收Activity返回数据

      本文链接:https://www.haomeiwen.com/subject/gglbwqtx.html