【发布时间】:2014-02-13 12:38:26
【问题描述】:
我正在尝试使用startActivityForResult(),我需要从一个片段开始一个活动,然后处理原始活动中的结果而不是启动它的片段(当返回时按下)。谁能告诉我这是否可能或我的问题是什么?
Activity_A承载Fragment_A,Fragment可以启动Activity_B。
片段_A:
Intent intent = new Intent(mContext, Activity_B.class);
intent.putExtra(EXTRA_CHOSEN_BUSINESS, mChosenBusiness);
intent.putExtra(EXTRA_CHOSEN_POSITION, position);
getActivity().startActivityForResult(intent, 1);
活动_B:
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("myBoolean", wasUsingMap);
setResult(RESULT_OK, intent);
finish();
super.onBackPressed();
}
活动_A:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK){
mWasUsingMap = data.getBooleanExtra("myBoolean", false);
}
}
}
本例中的数据始终为空。
为了测试,我尝试不使用getActivity().startActivityForResult(intent, 1);,而仅使用startActivityForResult(intent, 1); 并将onActivityResult 放置在片段中(在this answer 之后的活动中调用超级onActivityResult),但数据仍然为空。如果可能的话,我无论如何都需要它在托管活动中。我也尝试了最佳答案here,但我仍然很难过..
(作为旁注,布尔值用于检测当用户按下返回时应显示哪个片段)。
【问题讨论】:
标签: android-intent android-fragments onactivityresult