正常使用onActivityResult的流程
- MainActivity启动OtherActivity
Intent intent = new Intent(MainActivity.this, OtherActivity.class);
startActivityForResult(intent, MAIN_ACTIVITY);
- OtherActivity设置返回结果
Intent intent = new Intent(OtherActivity.this, MainActivity.class);
setResult(OTHER_ACTIVITY, intent);
finish();
- MainActivity接收返回结果
@Override
protected void onActivityResult(int requestCode,
int resultCode, Intent intent) {
// 这里假设你用的是resultCode作为识别
switch(resultCode) {
// TO-DO
}
}
不正常的流程
如果OtherActivity里面有一个方法是直接finish掉自己(finish之前没有调用setResult()),那么MainActivity同样会调用onActivityResult(),经过调式发现,返回来的resultCode为0。所以在定义resultCode时注意不要定义为0,否则就会出现一种状况:当我们在OtherActivity中直接调用finish()时,发现MainActivity的onActivityResult()中某个方法被执行了,这个显然不是我们想要的。