您的位置:首页 > 移动开发 > Android开发

onActivityResult无故被调用

2015-09-22 12:21 363 查看

正常使用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()中某个方法被执行了,这个显然不是我们想要的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android bug