先上效果图
目的就是点输入起点时,跳转到一个新的页面,然后选择地点后结果回传
这时就能用到startActivityForResult方法以及onActivityResult方法,首先在左边的页面的类中实现这个方法
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
}
先分析三个参数requestCode,resultCode,data。
requestCode:请求码,为了区分不同来源的请求而设置的一个code,在这里因为起点和终点在同一个页面,所以两个的requestcode是相同的,如果不同的话就不一样了。
resultCode:结果码,这里就得说到setResult(int resultCode,Intent data)这个方法,是结果的页面使用的,比如起点、终点指向同一个activity,最后返回的数据是起点,还是终点就依赖resultCode进行区分。
data:是结果页返回的数据,为intent类型。
请求页
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (REQUEST_CODE == requestCode) {
switch (resultCode) {
case 101:
Bundle bundle = data.getExtras();
String strReturn = bundle.getString("MSG").trim();
mQidian.setText(strReturn);
break;
case 102:
Bundle bundle2 = data.getExtras();
String strReturn2 = bundle2.getString("MSG").trim();
mZhongdian.setText(strReturn2);
break;
default:
break;
}
}
super.onActivityResult(requestCode, resultCode, data);
}
Intent intent = new Intent();
intent.putExtra("textmsg", "输入终点...");
intent.putExtra("request", 102);
intent.setClass(getActivity(), SelectPoint.class);
this.startActivityForResult(intent, REQUEST_CODE);
结果页
textmsg = this.getIntent().getStringExtra("textmsg");
request= this.getIntent().getIntExtra("request", 102);
String location = list.get(position).toString().trim();
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("MSG", location);
intent.putExtras(bundle);
SelectPoint.this.setResult(request, intent);//request是起始页传过来的,用于返回区分
SelectPoint.this.finish();