正常使用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()中某个方法被执行了,这个显然不是我们想要的。
理解onActivityResult异常行为及避免方法
本文深入探讨了在Android开发中使用onActivityResult时可能出现的异常情况,特别是当OtherActivity直接finish而未调用setResult导致MainActivity回调的后果。通过实例分析,提供了解决方案并强调了正确设置resultCode的重要性。
427

被折叠的 条评论
为什么被折叠?



