我的MainActivity启动一个片段,这个片段启动MySecondActivity,当SecondActivity完成时,她启动了ThirdActivity。
我希望我的MainActivity能够在ThirdActivity完成时检测到。
我尝试使用onActivityResult,这是我完成MySecondActivity时的代码
Intent intent = new Intent();
setResult(Utils.RESULT_FROM_ORDER_FINISH, intent);
OrderFinishActivity.this.finish();
OrderFinishActivity.this.overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
在我的MainActivity中,我获得了onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Utils.RESULT_FROM_ORDER_FINISH) {
// do thing
}
}
Fragment使用
启动SecondActivityIntent mainIntent = new Intent(activity, activityClass);
activity.startActivityForResult(intent, requestCode);
SecondActivity使用相同的代码启动第三个
但onActivityResult不是触发器,我认为片段得到了信息,我希望他将信息传递给MainActivity
答案 0 :(得分:2)
更新问题
你能做的是
1 > startActivityForResult(SecondActivity).
2 > Finish SecondActvity set result_ok.
3 > In OnActivityResult of FirstActivity startActivityForResult(ThirdActivity).
4 > Finish ThirdActvity set result_ok.
5 > In OnActivityResult of FirstActivity do your stuff.
这里指出的是不要从SecondActivity启动ThirdActivity,而是从FirstActivity启动它。
答案 1 :(得分:1)
如果您要从片段
启动Second activity
,请更换
startActivityForResult(intent, Defines.FILTER_BY_CATALOGUE);
与
getActivity().startActivityForResult(intent,Utils.RESULT_FROM_ORDER_FINISH);
并替换
setResult(Utils.RESULT_FROM_ORDER_FINISH, intent);
// 1st parameter is not request code but result code
与
setResult(RESULT_OK, intent);
Second Activity
中的
答案 2 :(得分:0)
如果从片段中调用startActivityForResult
并且您想要父活动触发器onActivityResult
,则应该开始获取父活动实例的新活动:
//This way will work
getActivity().startActivityForResult(intent,Utils.RESULT_FROM_ORDER_FINISH);
//This way will not
startActivityForResult(intent,Utils.RESULT_FROM_ORDER_FINISH);