启动并接收Activity返回数据

2019-04-16  本文已影响0人  ZYiDa

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

具体如下

当前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()
        }
上一篇 下一篇

猜你喜欢

热点阅读