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í.

  • NestedScrollview + TextView + RecyclerView
  • Los fragmentos no se liberan de la memoria
  • Navegación de nuevo a FragmentPagerAdapter -> fragmentos están vacíos
  • ¿Ha cambiado el título en el cambio de orientación?
  • ¿Es posible agregar vista de imagen en una barra de herramientas?
  • GetView in fragment devuelve a veces null
  • Mostrar un RecyclerView en Fragmento
  • Inflar un diseño con ImageButton en Fragmento mediante programación
  • Cómo controlar páginas de páginas de vista desde otra página
  • ¿Cómo manejar varios accesos a medios sociales y sesiones de flujo en Android?
  • Llamar a un método Fragment de una actividad principal
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.