相关方法
- startActivityForResult (Intent intent,int requestCode)
intent
requestCode
如果requestCode> = 0,则当Activity退出时,将在onActivityResult()中返回此请求码。
- onActivityResult (int requestCode, int resultCode, Intent data)
requestCode
最初提供给startActivityForResult()的整数请求代码,允许您识别此结果的来源。resultCode
子活动通过其setResult()返回的整数结果代码。data
- setResult (int resultCode,Intent data)
resultCode
结果码回传到起始的Activity,通常使用RESULT_OK或RESULT_CANCELED(官方文档推荐使用)。data
通过Intent回传数据到起始的Activity中。
关于resultCode
可以查看Activity.java的源码
Activity.java
/** Standard activity result: operation canceled. */Activity的标准结果:取消操作
public static final int RESULT_CANCELED = 0;
/** Standard activity result: operation succeeded. */Activity的标准结果:操作成功
public static final int RESULT_OK = -1;
FirstActivity.java
public static final int DISTRICT = 101;
public static final int TOWER = 102;
public static final int ROOM = 103;
......
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.rl_district://小区
Intent districtIntent1 = new Intent(mContext, TenementSelectActivity.class);
districtIntent1.putExtra("flag", DISTRICT);
startActivityForResult(districtIntent1, DISTRICT);
break;
case R.id.rl_tower://楼栋
Intent districtIntent2 = new Intent(mContext, TenementSelectActivity.class);
districtIntent2.putExtra("flag", TOWER);
startActivityForResult(districtIntent2, TOWER);
break;
case R.id.rl_room://房间号
Intent districtIntent3 = new Intent(mContext, TenementSelectActivity.class);
districtIntent3.putExtra("flag", ROOM);
startActivityForResult(districtIntent3, ROOM);
break;
case R.id.btn_save:
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case DISTRICT:
String district = data.getStringExtra("district");//小区名
String districtId = data.getStringExtra("districtId");//小区ID
tv_select_community.setText(district);
break;
case TOWER:
String tower = data.getStringExtra("tower");//楼栋
String towerId = data.getStringExtra("towerId");//楼栋ID
tv_select_tower.setText(tower);
break;
case ROOM:
String room = data.getStringExtra("room");//房间号
String roomId = data.getStringExtra("roomId");//房间号ID
tv_select_room.setText(room);
break;
}
}
}
SecondActivity.java
private int flag;
......
flag = getIntent().getIntExtra("flag", 0);
.....
mTenementSelectAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
if (flag == TenementExpenseActivity.DISTRICT) {
Intent intent = new Intent();
intent.putExtra("district", mDatas.get(position).getDistrict());
intent.putExtra("districtId", mDatas.get(position).getDistrictId());
setResult(RESULT_OK, intent);
} else if (flag == TenementExpenseActivity.TOWER) {
Intent intent = new Intent();
intent.putExtra("tower", mDatas.get(position).getTower());
intent.putExtra("towerId", mDatas.get(position).getTowerId());
setResult(RESULT_OK, intent);
} else {
Intent intent = new Intent();
intent.putExtra("room", mDatas.get(position).getRoom());
intent.putExtra("roomId", mDatas.get(position).getRoomId());
setResult(RESULT_OK, intent);
}
finish();
}
});
参考资料
相关API
https://www.cnblogs.com/fuck1/p/5456337.html
作者:Brainbg(白雨)
GitHub:https://github.com/Brainbg
博客:https://www.brainbg.com/
简书:https://www.jianshu.com/u/94518ede7100
CSDN:https://blog.csdn.net/u014720022