【发布时间】:2015-03-24 04:16:34
【问题描述】:
我有一个片段MainFragment,我有:
Intent i = new Intent(getActivity(), PersonActivity.class);
startActivityForResult(i, 0);
活动开始正常,它开始自己的PersonFragment 和PersonFragment 我做:
@Override
public void onDestroy() {
super.onDestroy();
Intent i = new Intent();
i.putExtra(PERSON_ID_EXTRA, getPersonId());
i.putParcelableArrayListExtra(PERSON_CONTACT_LIST, (ArrayList<? extends Parcelable>) contactFriends);
getActivity().setResult(Activity.RESULT_OK, i);
}
回到我的MainFragment 我愿意:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if ( requestCode != 0) {
return;
}
int personId = data.getIntExtra(PERSON_ID_EXTRA, -1);
List<Person> contacts = data.getParcelableArrayListExtra(PERSON_CONTACT_LIST);
for(Person p:contacts) {
Log.d("APP", p.getFullName());
}
}
我看到代码转到onActivityResult,但data 为空。我在这里搞砸了什么?
更新:
我看到按下后退按钮不会调用onDestroy()。
但是我看到的所有示例都在哪里使用getActivity.finish(),我不想完成活动。只有当用户按下例如回传数据
更新 2:
我添加了以下内容并浏览了该代码,但结果 onActivityResult 中的 Intent data 仍然为空
@Override
public void onPause() {
super.onPause();
Intent i = new Intent();
i.putExtra(PERSON_ID_EXTRA, getPersonId());
i.putParcelableArrayListExtra(PERSON_CONTACT_LIST, (ArrayList<? extends Parcelable>) contactFriends);
getActivity().setResult(Activity.RESULT_OK, i);
}
【问题讨论】:
-
覆盖
onKeyDown而不是使用onDestroy() -
@Apurva:我会尝试,但也请检查 OP 中的更新
-
@Apurva:
onKeyDown是活动方法。我在片段中设置结果。我应该如何使用它? -
我也知道,但我看到了这个stackoverflow.com/questions/22552653/…
-
如果您想在片段中使用 startActivityForResult,请不要忘记在 FragmentActivity 类的 startActivityForResult 中添加 return false。这个在片段一之前。希望对您有所帮助
标签: java android android-fragments android-activity