Chamada de retorno para um fragmento de um DialogFragment

Pergunta: Como criar um retorno de chamada de um DialogFragment para outro Fragment. No meu caso, a atividade envolvida deve estar completamente inconsciente do DialogFragment.

Considere que tenho

public class MyFragment extends Fragment implements OnClickListener

Então, em algum momento eupoderia Faz

DialogFragment dialogFrag = MyDialogFragment.newInstance(this);
dialogFrag.show(getFragmentManager, null);

Onde MyDialogFragment parece

protected OnClickListener listener;
public static DialogFragment newInstance(OnClickListener listener) {
    DialogFragment fragment = new DialogFragment();
    fragment.listener = listener;
    return fragment;
}

Mas não há garantia de que o ouvinte estará por perto se o DialogFragment fizer uma pausa e retornar ao longo de seu ciclo de vida. As únicas garantias em um Fragment são aquelas passadas através de um Bundle via setArguments e getArguments.

Existe uma maneira de referenciar a atividade se ela deve ser o ouvinte:

public Dialog onCreateDialog(Bundle bundle) {
    OnClickListener listener = (OnClickListener) getActivity();
    ....
    return new AlertDialog.Builder(getActivity())
        ........
        .setAdapter(adapter, listener)
        .create();
}

Mas eu não quero que a Activity ouça eventos, eu preciso de um fragmento. Realmente, poderia ser qualquer objeto Java que implementasse OnClickListener.

Considere o exemplo concreto de um fragmento que apresenta um AlertDialog via DialogFragment. Tem botões Sim / Não. Como posso enviar esses botões de volta ao Fragmento que o criou?

questionAnswers(11)

yourAnswerToTheQuestion