先上效果圖
目的就是點輸入起點時,跳轉到一個新的頁面,然後選擇地點後結果回傳
這時就能用到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();