在
Android
中,可以使用
Intent
跳转至新的
Activity
页面,并可以通过
putExtra
携带下个页面需要的参数。
A中的代码:
Intent intent =
new
Intent(xxx.
this
, yyy.
class
);
intent.putExtra(
"name"
,
"leirenbaobao"
);
startActivity(intent);
B中的代码:
String name = getIntent().getStringExtra(
"name"
)
现有如下需求:
在A页面中携带参数跳转至B页面,再B页面确定某个参数后,再返回给A页面。
Android中,这时就使用
startActivityForResult()在
A发起跳转,在
B中通过
setResult()返回并
finish()掉当前
B页面,再回到
A方法中重写
onActivityResult()完成操作。
其中,因为一个页面中可能要发起不同的请求,再另一个页面中,也会有不同的结果返回,所以采用
resultCode和
requestCode结合的方式控制进入准确的方法中。
举例如下,A页面是火车票查找页面,需要跳转至B页面,选择出发城市,再将结果返回给A页面使用。
A中的
startActivityForResult()代码:
findViewById(R.id. my_button).setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this , BActicity.class );
//1000是requestCode,偷懒不写成静态变量名了。
startActivityForResult(intent, 1000);
}
});
B中的
setResult()
代码:
Intent intent = new Intent(BActicity. this, MainActivity. class);
intent.putExtra( "name", editText.getText().toString().trim());
//这里是resultCode
setResult(2000, intent);
//finish()当前页面
finish();
再回到A中的
onActivityResult()
处理,代码如下:
@Override
protected void onActivityResult( int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
//同时验证request和resultCode
if(requestCode==1000&&resultCode==2000){
String name = data.getStringExtra( "name");
tv.setText(name);
}
super.onActivityResult(requestCode, resultCode, data);
}
ctrlz presents!