Je veux savoir s'il est possible d'utiliser onActivityResult()
dans l'intérieur de Fragment et si oui, comment cela fonctionne-t-il?.
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.
}
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);
}
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
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
.
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);
}
}