5

Ho un'attivitàintercetta DialogFragment respingere all'interno attività

public class ShowFileActivity extends FragmentActivity 

e quando occours qualche evento, questa chiamata classe di un DialogFragment

public class ConfirmDialog extends DialogFragment 

che è una finestra di conferma semplice (con "respingere" e " ok "pulsante). Se l'utente preme il tasto respingere, io chiamo

dismiss() 

e tornare a ShowFileActivity. Altrimenti, se l'utente preme ok, dopo aver effettuato alcune operazioni, dopo che la chiamata è stata chiusa nella finestra di dialogo, tornerò all'attività padre di ShowFileActivity. C'è un modo per farlo? DialogFragment lancia qualsiasi evento nella sua vista genitore?

risposta

8

Quello che puoi fare è chiamare un metodo dell'attività contenente dall'interno del frammento. Come per ogni altro frammento, è possibile chiamare getActivity() che restituisce l'attività di contenimento.

@Override 
public void onDismiss(DialogInterface dialog) { 
    ShowFileActivity parent = (ShowFileActivity) getActivity(); 
    parent.doWhateverYouWantWhenDialogDismissed(); 
} 

Un altro approccio (più fantasia) sarebbe quella di utilizzare un bus evento come otto o greenrobot.