Rappel lors de la suppression de DialogFragment

Je veux lancer un dialogue avec une mise en page personnalisée, que j'ai mis en œuvre par l'intermédiaire d'un DialogFragment. (En gros, j'ai juste changé onCreateView() et ajouté des gestionnaires de bouton). La boîte de dialogue permet à l'utilisateur de changer rapidement d'un paramètre important.

Cette boîte de dialogue sera lancé à partir de plusieurs activités différentes. Les différentes activités n'ont pas beaucoup en commun, sauf que ils ont besoin pour se rafraîchir après modification de l'utilisateur pour le réglage. Ils n'ont pas besoin d'obtenir des informations à partir de la boîte de dialogue; ils ont simplement besoin de savoir quand il est fermé (rejeté).

Ce que j'ai Essayé de

J'ai essayé d'avoir de l'activité de l'actualisation dans onResume(), mais le lancement et la révocation d'un dialogue ne semble jamais à l'appel de cette méthode. (Donc je ne suis pas sûr de savoir pourquoi cela existe encore, mais c'est sans doute un sujet pour une autre question.)

Ensuite, j'ai essayé d'ajouter un DialogInterface.OnDismissListener à la boîte de dialogue:

public static void showMyDialog(OnDismissListener listener, Activity activity)
{
    DialogFragment fragment = new MyDialogFragment();
    fragment.show(activity.getFragmentManager(), "date");
    activity.getFragmentManager().executePendingTransactions();//A
    fragment.getDialog().setOnDismissListener(listener);//B
}

Quand j'ai d'abord à gauche de la ligne, j'ai reçu un NullPointerException sur la ligne B, parce que le dialogue est nul à ce point. Suivant les conseils de cette SORTE de réponseje l'ai mis dans l'appel à executePendingTransaction(). Cela provoque une exception IllegalStateException sur la ligne B, avec le message "OnDismissListener est déjà pris par DialogFragment et ne peut pas être remplacé." J'ai aussi essayé de mettre setOnDismissListener() avant l'appel à la méthode show(), mais qui a toujours causé une exception NullPointerException.

J'ai ensuite lu cette autre AFIN de répondre àqui dit que l'original, le demandeur était "l'appel de getDialog() trop tôt dans la DialogFragment du cycle de vie." J'ai donc essayé d'ajouter un constructeur à mon DialogFragment:

public MyDialogFragment(SomeCallback illTakeAnythingICanGet)
{
    //I'll store the callback here and call it later
}

Malheureusement, l'ajout d'un constructeur fait Android Peluches freak out avec une fatale avertissement, et quand je l'ai regardé, j'ai trouvé un commentaire en cette question que semble dire cette approche, il sera impossible de traiter avec l'utilisateur, la rotation de l'écran tandis que la boîte de dialogue est ouverte.

La Question

Comment une activité figure lors d'une DialogFragment a fermé (été rejeté) de façon à ne pas briser mon application si l'utilisateur fait pivoter l'écran? Dois-je utiliser autre chose que d'un DialogFragment?

source d'informationauteur Impatient Dev