许久未发博客,今日小弟写公司项目时,遇到些纠结问题,花数小时查阅资料才得已解决,现在就分享结果。
问题出现的情况:
当Fragment跳转到下一个activity时,onActivityResult总是提前就接受到结果,后面查阅资料发现,调整的时候添加了new task标识,等是一个新的任务,所以每当跳转的时候onActivityResult就会有结果。去掉new task标识就可以了。如若不行,可能的activity中先接受到onActivityResult参数,可以在acitiviy里面把结果传到fragment中。
当onActivityResult接收到参数的时候,做处理的时候可能会报错误,我这里是刷新里面的方法,我就用一个isFresh的状态标志,然后在onStart中做处理。临时写的,有点乱,如果问题可以问我,有问必答。谢谢
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(resultCode, resultCode, data);
LogUtil.showInfo(requestCode + " " + resultCode);
//修改成功 刷新 onActivityResult中不能执行相应的操作 所以给到onStart中操作
if(resultCode == 5) {
isFresh = true;
}
}
Intent intent = new Intent(context, MotifyAccountActivity.class);
//fragment 调到 activity onActivityResult 中没结果,而且还提前加载, 因为FLAG_ACTIVITY_NEW_TASK是新起了一个activity导致不在同一个任务,所以导致这个问题
//intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if(bundle != null) {
<span style="white-space:pre"> </span>intent.putExtras(bundle);
}
getActivity().startActivityForResult(intent, 1);
@Override
public void onStart() {
super.onStart();
LogUtil.showInfo("onStart");
if(isFresh) {
initData();
isFresh = false;
}
}