web-dev-qa-db-fra.com

Comment puis-je appeler OnActivityResult dans Fragment et son fonctionnement?

Je veux savoir s'il est possible d'utiliser onActivityResult()dans l'intérieur de Fragment et si oui, comment cela fonctionne-t-il?.

15
Shweta Nandha

Vous appelez:

startActivityForResult(i, 1);

et alors:

@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.
}
18
HaroldSer

Cela fonctionnera certainement, cela fonctionnera comme dans les activités. Vous avez appelé startActivityForResult(intent, requestCode); Et obtenez normalement le résultat dans 

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

Oui, vous pouvez utiliser OnActivityResult dans Fragment.like this

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

maintenant vous appelez onActivityResult comme ceci

getActivity().startActivityForResult(). 

MODIFIER

La réponse ci-dessus est ancienne 

vérifier ici la réponse mise à jour https://stackoverflow.com/a/17085889/7666442

2
Nilesh Rathod

si vous appelez startActivityForResult() en fragment, le résultat est transmis à l'activité parent.

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

Comment ça marche

si vous voyez requestCode en activité, ce sera comme 655545, maintenant. 

super.onActivityResult () calculera le fragment souhaité et le code de requête.

si votre fragment dans l'index de fragment souhaité de ViewPager est trouvé à l'aide de 

requestCode>>16

et requestCode est trouvé par requestCode&0xffff

1
Rahul Devanavar

Utilisez ce code dans l'activité.

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);
    }
}
1
Android Geek