C'è un modo che posso rilevare quando un DialogFragment viene rimosso, in modo che io possa aggiornare il suo frammento genitore?Aggiorna frammento quando dialogfragment viene eliminato
risposta
Ignora onDismiss() di DialogFragment o quando si crea la finestra di dialogo sottostante, impostare un listener con setOnDimissListener().
Un modo per affrontare questo è quello di incorporare il tuo DialogFragment all'interno di un'attività e visualizzare l'attività di una finestra di dialogo, c'è una punta nel seguente link che spiega come:
http://developer.android.com/guide/topics/ui/dialogs.html
È possibile utilizzare questa per aggiornare il frammento sottostante perché quando la finestra di dialogo (che è un'attività) è terminata, onResume() verrà richiamato sul frammento sottostante. Aggiungi il codice per aggiornare lo stato del frammento nel metodo onResume() e questo è tutto quello che c'è.
Penso che questo sia l'approccio migliore, ma che ne è dell'API 8+? Questo è stato aggiunto nell'API 11 – Iree
Ho appena risolto questo nel mio progetto. Quello che ho è un'attività con un ListFragment. In quel frammento di lista, quando si fa clic su un particolare elemento, visualizzo un DatePickerFragment (un DialogFragment personalizzato che visualizza un DatePickerDialog). Quando una data è selezionata, voglio che ListFragment sia rinfrescato.
per raggiungere questo obiettivo, l'attività che ospita la ListFragment (e ospita anche la DatePickerFragment, come un dato di fatto) ho implementato un metodo che sostituisce semplicemente il ListFragment con una nuova istanza, in questo modo:
public void criteriaChanged()
{
getFragmentManager().beginTransaction()
.replace(R.id.container, new FilterFragment())
.commit();
}
io chiamo questo metodo dal DatePickerFragment, da onDateSet():
FilterActivity fa = (FilterActivity) getActivity();
fa.criteriaChanged();
questo fa il trucco per me.
È possibile aggiungere un ascoltatore e ignorare l'onDismiss della vostra finestra frammento:
public class DismissDialog extends DialogFragment {
private DialogInterface.OnDismissListener onDismissListener;
public void setOnDismissListener(DialogInterface.OnDismissListener onDismissListener) {
this.onDismissListener = onDismissListener;
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
if (onDismissListener != null) {
onDismissListener.onDismiss(dialog);
}
}
}
Poi, il genitore, si imposta un ascoltatore:
DismissDialog d = new DismissDialog();
d.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
});
d.show(getSupportFragmentManager(), "sometag");
Questa è la risposta corretta – FireZenk
ho provato @Gazer risposta, non funziona per me, sto usando diversi frammenti di classe
import android.app.Fragment;
Ma ho ottenuto questo funzionamento
Creare una classe di interfaccia
public interface MyDialogListener { void OnCloseDialog(Object obj); //you can put any object here }
Implementare la classe di interfaccia nel frammento Parent
public class ActionBarFragment extends Fragment implements MyDialogListener{ @Override public void OnCloseDialog(Object obj) { //Do you refresh }
e poi aggiungo l'ascoltatore all'interno del DialogFragment
public class SpecialDialogFragment extends DialogFragment { MyDialogListener mListener; public SpecialDialogFragment(MyDialogListener listener) { this.mListener = listener; } @Override public void onStop() { super.onStop(); if(mListener!=null) mListener.OnCloseDialog(null); }
- 1. Il frammento di Android viene visualizzato come dialogfragment o frammento normale
- 2. Cookie non viene eliminato
- 3. DialogFragment genera ClassCastException se chiamato da Frammento
- 4. nidificati DialogFragment viene licenziato dopo la rotazione
- 5. HTML5: Aggiorna pagina quando popstate viene licenziato
- 6. onContextItemSelected non viene chiamato in un DialogFragment
- 7. DialogFragment che non si ridimensiona quando viene visualizzata la tastiera
- 8. aggiorna la visualizzazione del testo nell'attività dal frammento
- 9. ViewPager non si aggiorna sempre quando viene chiamato setAdapter, FragmentStatePagerAdapter
- 10. Aggiorna il frammento corrente in FragmentPagerAdapter
- 11. Il frammento della finestra di dialogo respinto riappare di nuovo quando viene ripristinata l'app
- 12. onActivityResult() non viene eseguito in DialogFragment
- 13. L'oggetto viene eliminato dopo PostAsync con HttpClient
- 14. costruttore unique_ptr con deleter personalizzato viene eliminato
- 15. Come ottenere dati da DialogFragment a un frammento?
- 16. Impossibile rendere trasparente il DialogFragment personalizzato sul frammento
- 17. finestre di dialogo personalizzate Frammento si blocca quando metodo setter viene chiamato
- 18. Aggiorna la Galleria dopo aver eliminato un file immagine?
- 19. DialogFragment arresta l'attività quando chiama startActivity()
- 20. getSystemServices non è definito quando viene chiamato in un frammento?
- 21. Gestire il tasto Indietro quando viene estratto l'ultimo frammento
- 22. Servizio musicale eliminato anche quando startForground
- 23. Viewpager in frammento non viene mostrato (ripristinato) quando si torna da un altro frammento
- 24. Consenti tocco esterno per DialogFragment
- 25. DialogFragment Close Evento
- 26. DialogFragment senza FragmentActivity
- 27. In che modo DialogFragment influisce sul ciclo di vita del frammento chiamante?
- 28. Android aggiorna un ViewPager all'interno di un frammento
- 29. deleteRecord non aggiorna ArrayController quando Model è filtrato
- 30. Come rendere DialogFragment modale?
Questo informa il 'DialogFragment' che è stato rimosso, ma non è il frammento del genitore che è quello che la domanda ha posto. – howettl
Il genitore può utilizzare questi metodi per ottenere una richiamata e rispondere quando viene chiusa. Vedere questa risposta per l'uso: http: // StackOverflow.com/a/29518363/445348 – cottonBallPaws