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?