在我的应用程序的某个地方,我有一个Dialog片段,它启动了一个activityForResult
问题 - 当我退出被调用的活动时,onActivityResult没有被调用
陌生人的问题 - 我把调试点放在onActivityResult方法上,它叫做!!!只是当活动结束时,但在活动完全显示在屏幕上之前
这是我的代码:
这是在对话框片段中写的
btnSelectContacts.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent contactPicker = new Intent(getActivity(), ContactPickerActivity.class);
contactPicker.putExtra(ContactData.CHECK_ALL, false);
startActivityForResult(contactPicker, REQ_SELECT_CONTACTS);
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data != null && data.hasExtra(ContactData.CONTACTS_DATA)) {
data.setAction(IntentKeys.CONTACTS);
getActivity().sendBroadcast(data);
}
}
我所看到的是意外的生命周期行为 调用堆栈就像这样
ImageButton点击 调用了ImageButton onClickListener startActivityForResult 它所在的活动的onActivityResult,调用它所在的对话框片段 调用被调用活动的onResume 被称为活动
Intent result = new Intent();
ArrayList<ContactData> resultList = contactsAdapter.items;
Iterator<ContactData> iterResultList = resultList.iterator();
ArrayList<ContactData> results = new ArrayList<ContactData>();
//pass only checked contacts
while(iterResultList.hasNext()) {
ContactData contactData = iterResultList.next();
if(contactData.checked) {
results.add(contactData);
}
}
result.putParcelableArrayListExtra(ContactData.CONTACTS_DATA, results);
setResult(Activity.RESULT_OK, result);
finish();
然后只调用对话框片段的onResume而不是预期的onActivityResult
我做错了什么?!
答案 0 :(得分:7)
从片段开始活动:
getActivity().startActivityForResult(intent, code);
将结果返回片段:
父活动中的(片段调用活动):
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
fragmentObject
.onActivityResult(requestCode, resultCode, data);
}