Il y a un moyen beaucoup plus simple pour un résultat à partir d'un DialogFragment.
Tout d'abord, dans votre Activité, Fragment, ou FragmentActivity vous devez ajouter les informations suivantes:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
// Stuff to do, dependent on requestCode and resultCode
if(requestCode == 1) // 1 is an arbitrary number, can be any int
{
// This is the return result of your DialogFragment
if(resultCode == 1) // 1 is an arbitrary number, can be any int
{
// Now do what you need to do after the dialog dismisses.
}
}
}
L' requestCode
est en fait votre int de l'étiquette de la DialogFragment vous appelle, je vais vous montrer comment cela fonctionne dans une seconde. Le resultCode est le code que vous renvoyer à partir de la DialogFragment en parler à votre attente actuelle de l'Activité, Fragment, ou FragmentActivity ce qui s'est passé.
Le prochain morceau de code est l'appel à la DialogFragment. Un exemple est ici:
DialogFragment dialogFrag = new MyDialogFragment();
// This is the requestCode that you are sending.
dialogFrag.setTargetFragment(this, 1);
// This is the tag, "dialog" being sent.
dialogFrag.show(getFragmentManager(), "dialog");
Avec ces trois lignes que vous déclarez votre DialogFragment, la définition d'une requestCode (qui va appeler le onActivityResult(...) une fois que la boîte de Dialogue est fermée, et vous êtes alors en montrant la boîte de dialogue. C'est aussi simple que cela.
Maintenant, dans votre DialogFragment vous suffit d'ajouter une ligne, directement auprès de l' dismiss()
, de sorte que vous envoyez un resultCode retour à la onActivityResult().
getTargetFragment().onActivityResult(getTargetRequestCode(), resultCode, getActivity().getIntent());
dismiss();
C'est tout. Remarque, le resultCode est défini comme int resultCode
que j'ai défini pour resultCode = 1;
dans ce cas.
Voilà, vous pouvez maintenant envoyer le résultat de vos DialogFragment de retour à l'appel de l'Activité, Fragment, ou FragmentActivity.
Aussi, il ressemble cette information a été publiée auparavant, mais il n'y avait pas suffisamment exemple donné j'ai donc pensé que je pourrais fournir plus de détails.