How can I call OnActivityResult inside Fragment and how it work?

这一生的挚爱 提交于 2019-11-30 03:46:05

You would call:

startActivityForResult(i, 1);

and then:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
   //super.onActivityResult(requestCode, resultCode, data); comment this unless you want to pass your result to the activity.
}

Use this code in the activity.

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);
    Fragment fragment = (Fragment) getSupportFragmentManager().findFragmentByTag(childTag);
    if (fragment != null) {
        fragment.onActivityResult(requestCode, resultCode, intent);
    }
}

Definitely it will work, It will work same like in activities. You have call startActivityForResult(intent, requestCode); and normally get result in

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
}

Yes you can use OnActivityResult inside Fragment.like this

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
// perform your action here
}

now you call onActivityResult like this

getActivity().startActivityForResult(). 

EDIT

The Above answer is old

check here the updated answer https://stackoverflow.com/a/17085889/7666442

if you call startActivityForResult() in fragment , result is delivered to parent activity.

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);//will deliver result to desired fragment.
}

How is works

if you see requestCode in activity it will be like 655545, now

super.onActivityResult () will calculate desired fragment and request code.

if your fragment in ViewPager desired fragment index is found using

requestCode>>16

and requestCode is found by requestCode&0xffff.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!