简体   繁体   English

来自对话框片段的startActivityForResult

[英]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.

相关问题 碎片不起作用的startActivityForResult - startActivityForResult From Fragment Not Working 片段的奇怪行为startActivityForResult - Strange behavior startActivityForResult from Fragment 片段中的startActivityForResult - startActivityForResult in fragment 片段中的startActivityforResult-从图库中获取图像 - startActivityforResult from fragment - get Image from gallery 如何在对话框中启动startActivityForResult()以接收fragment.onActivityResult中的结果 - how to startActivityForResult() in a dialog to receive result in fragment.onActivityResult Android-片段内的RecyclerViewAdapter中的startActivityForResult() - Android - startActivityForResult() from a RecyclerViewAdapter inside a Fragment 从startactivityforresult返回时,Android片段消失 - Android fragment disappear when return from startactivityforresult 从片段调用startActivityForResult时出错 - Getting error when calling startActivityForResult from fragment 从startActivityForResult返回后,片段消失了 - Fragment disappear after coming back from startActivityForResult 来自片段活动的片段调用startactivityforresult,但notifydatasetchanged不起作用 - fragment from fragment activity calls startactivityforresult but notifydatasetchanged does not work
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM