Actualizar el fragmento cuando se desactiva el diálogo

¿Hay alguna manera que puedo detectar cuando se desactiva un DialogFragment, para que pueda actualizar su fragmento padre?

Puede agregar un oyente y anular el diálogo onDismiss de su fragmento:

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); } } } 

Entonces, en el padre, usted fija un oyente:

 DismissDialog d = new DismissDialog(); d.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { } }); d.show(getSupportFragmentManager(), "sometag"); 

Anule onDismiss () de DialogFragment, o cuando construya el diálogo subyacente, defina un listener con setOnDimissListener () .

Una forma de lidiar con esto es incrustar el DialogFragment dentro de una Actividad y mostrar la actividad como un Diálogo, hay un consejo en el siguiente enlace que explica cómo:

http://developer.android.com/guide/topics/ui/dialogs.html

Puede utilizar esto para actualizar el fragmento subyacente porque cuando se termina el cuadro de diálogo (que es una actividad), onResume () se llamará en el fragmento subyacente. Agregue código para actualizar el estado del fragmento en el método onResume () y eso es todo lo que hay demasiado.

Acabo de resolver esto en mi proyecto. Lo que tengo es una actividad con un ListFragment. En ese fragmento de lista, cuando se hace clic en un elemento en particular, se muestra un DatePickerFragment (un DialogFragment personalizado que muestra un DatePickerDialog). Cuando se selecciona una fecha, quiero que se actualice el ListFragment.

Para lograr esto, en la actividad que aloja el ListFragment (y también alberga el DatePickerFragment, de hecho) implementé un método que simplemente reemplaza el ListFragment con una nueva instancia, así:

 public void criteriaChanged() { getFragmentManager().beginTransaction() .replace(R.id.container, new FilterFragment()) .commit(); } 

Llamo a este método desde el DatePickerFragment, desde onDateSet ():

 FilterActivity fa = (FilterActivity) getActivity(); fa.criteriaChanged(); 

Esto hace el truco para mí.

  • Fragmento como singleton en Android
  • ¿Hay una manera de mostrar fragmentos en TabHost?
  • FragmentManager popBackStack no quita el fragmento
  • Android: haga que la barra de búsqueda completa pueda hacer clic
  • Datos de paso de Android entre Fragmentos
  • ClassCastException en una subclase de ListFragment utilizando la biblioteca de compatibilidad
  • Manera de la insensatez a manejar Fragmento en cambio de la orientación
  • Android Searchview OnQueryTextListener con base de datos no funciona
  • Obtener una referencia a un niño Fragmento después de que el fragmento padre se ha recreado
  • ¿Cómo puedo romper las cosas con Fragmentos con setRetainInstance (true) y agregarlos a backstack?
  • Android Recyclerview lag mientras se desplaza hacia abajo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.