我好像很少使用这个方法,特此记录一下。长时间不用就会忘记使用的过程。
在MainActivity的布局文件中添加一个Button和一个TextView。Button用来跳转界面,TextView用来展示结果。再创建一个Activity用于结果的返回。
MainAvtivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//执行跳转代码块
go.setOnClickListener {
val intent = Intent(this,TwoActivity::class.java)
/*
startActivityForResult(Intent, int)
Android官方文档的解释,最后一个整数的标识符,是用于标记是哪个activity启动的
在onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)方法中
第一个参数就是我们自己传送的参数,用于标记
*/
startActivityForResult(intent,1)
}
}
//接收返回结果代码块
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
/*
resultCode用于标记TwoActivity是否正常返回到MainActivity
这个标记是TwoActivity使用setResult(int)方法提供的
一般的返回参数有:RESULT_CANCELED、RESULT_OK
也可以是从 RESULT_FIRST_USER 开始的任何自定义值
如果TwoActivity非正常返回,会返回RESULT_CANCELED的标记值
*/
if(resultCode == RESULT_OK){
if(requestCode == 1){
val string = data?.getStringExtra("response")
resultTextView.text = string
}
}
}
}
TwoActivity
class TwoActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_two)
//传递数据操作代码块
returnToMain.setOnClickListener {
val text = editText.text.toString()
val intent = Intent().apply {
putExtra("response",text)
}
//传递数据使用intent对象
setResult(RESULT_OK,intent)
//结束activity
finish()
}
}
}