from - fullscreen dialogfragment android
Actualizar fragmento cuando se descarta dialogfragment (4)
Anular onDismiss () de DialogFragment, o al crear el cuadro de diálogo subyacente, establecer un oyente con setOnDimissListener () .
¿Hay alguna forma que pueda detectar cuando se descarta un DialogFragment, para que pueda actualizar su fragmento principal?
Una forma de lidiar con esto es insertar su DialogFragment dentro de una actividad y mostrar la actividad como un cuadro de diálogo, hay un consejo en el siguiente enlace que explica cómo:
http://developer.android.com/guide/topics/ui/dialogs.html
Puede usar esto para actualizar el Fragmento subyacente porque cuando el Diálogo (que es una Actividad) finaliza, se invocará onResume () 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.
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 hospeda el ListFragment (y también aloja 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 DatePickerFragment, desde onDateSet ():
FilterActivity fa = (FilterActivity) getActivity();
fa.criteriaChanged();
Esto hace el truco para mí.
Puede agregar un oyente y anular el desactivo de su diálogo de 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);
}
}
}
Luego, en el padre, configura un oyente:
DismissDialog d = new DismissDialog();
d.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
});
d.show(getSupportFragmentManager(), "sometag");