[英]startActivityForResult from dialog fragment
Somewhere in my app i have a Dialog fragment, that starts an activityForResult 在我的应用程序的某个地方,我有一个Dialog片段,它启动了一个activityForResult
The problem - onActivityResult does no get called when i exit the called activity 问题 - 当我退出被调用的活动时,onActivityResult没有被调用
The stranger problem - i put debug points on the onActivityResult method, it is called!!! 陌生人的问题 - 我把调试点放在onActivityResult方法上,它被称为!!! just not when the activity ends, but BEFORE the activity is displayed fully on the screen
只是不在活动结束时,而是在活动完全显示在屏幕上之前
This is my code: 这是我的代码:
this is written in the dialog fragment 这写在对话框片段中
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);
}
}
What i am seeing is unexpected life cycle behaviour the call stack goes like this 我所看到的是调用堆栈的意外生命周期行为
ImageButton click ImageButton onClickListener called startActivityForResult onActivityResult of the activity it is in, of the dialog fragment it is in, of the fragment itself is called onResume of the called activity is called called activity does ImageButton click ImageButton onClickListener称为startActivityForResult onActivityResult所在的活动,其所在的对话框片段,其片段本身称为onResume所调用的活动称为被称为activity
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();
and then just onResume of the dialog fragment is called instead of the expected onActivityResult 然后只调用对话框片段的onResume而不是预期的onActivityResult
what am i doing wrong?! 我究竟做错了什么?!
to start activity from fragment : 从片段开始活动:
getActivity().startActivityForResult(intent, code);
to get result back in fragment : 将结果返回到片段中:
in your parent activity (fragment call activity) : 在您的父活动(片段调用活动)中:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
fragmentObject
.onActivityResult(requestCode, resultCode, data);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.