¿Hay alguna manera que pueda detectar cuando un DialogFragment se descarta, para que pueda actualizar su fragmento principal?Actualizar fragmento cuando dialogfragment se descarta
Respuesta
Omitir onDismiss() de DialogFragment, o al crear el diálogo subyacente, establecer un oyente con setOnDimissListener().
Una forma de lidiar con esto es, para incrustar el DialogFragment dentro de una actividad y mostrar la actividad como un diálogo, hay una punta en el siguiente enlace que explica cómo:
http://developer.android.com/guide/topics/ui/dialogs.html
Se puede utilizar esta 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.
Creo que este es el mejor enfoque, pero ¿qué pasa con la API 8+? Esto fue agregado en API 11 – Iree
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 acoge el ListFragment (y que también acoge la DatePickerFragment, como una cuestión de hecho) he implementado 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();
}
me llaman a este método desde el DatePickerFragment, desde onDateSet():
FilterActivity fa = (FilterActivity) getActivity();
fa.criteriaChanged();
esto hace el truco para mí.
Puede añadir un detector y anular la onDismiss de su diálogo 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);
}
}
}
A continuación, en la matriz, se establece un oyente:
DismissDialog d = new DismissDialog();
d.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
});
d.show(getSupportFragmentManager(), "sometag");
Esta es la respuesta correcta – FireZenk
Probé respuesta @Gazer, se no funciona para mí, estoy usando diferentes clases fragmento
import android.app.Fragment;
Pero tengo este trabajo
Crear una clase de interfaz
public interface MyDialogListener { void OnCloseDialog(Object obj); //you can put any object here }
Implementar la clase de interfaz en el fragmento de Padres
public class ActionBarFragment extends Fragment implements MyDialogListener{ @Override public void OnCloseDialog(Object obj) { //Do you refresh }
y luego añado el oyente dentro de la 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. Django Sessions se descarta cuando se redirige de otro dominio
- 2. ¿Cómo hacer DialogFragment modal?
- 3. jQuery que se puede arrastrar, evento cuando se descarta fuera del dominio div
- 4. ¿Cómo se consume y descarta la ventana emergente cuando se hace clic afuera?
- 5. ¿Cómo establecer el diálogo de progreso como no cancelable cuando se gestiona como un fragmento?
- 6. Android DialogFragment onViewCreated no se llama
- 7. ¿Es posible animar un DialogFragment?
- 8. Descartar DialogFragment onClick
- 9. No puedo hacer que el DialogFragment personalizado sea transparente sobre el Fragmento
- 10. dismissViewControllerAnimated se llama pero ViewController no se descarta
- 11. Calling registerReceiver de un DialogFragment
- 12. fragmentos, DialogFragment y rotación de pantalla
- 13. Cómo mostrar un DialogFragment desde un controlador
- 14. 1 celda de tabla extra cuando se descarta una fila con ordenable jQueryUI (pero solo Chrome)
- 15. Diálogo de fragmento de Android que parece ignorar layoutMargin o layoutWidth cuando se utiliza weightSum
- 16. ¿Es posible actualizar la vista de un fragmento
- 17. DialogFragment en PreferenceActivity
- 18. g ++: const descarta calificadores
- 19. ¿Por qué usar DialogFragment?
- 20. fragmento android cuando llamar a bitmap.recycle()
- 21. Cómo hacer que el segundo fragmento se superponga en el primer fragmento mientras transiciones de fragmento
- 22. DialogFragment Orientation Change Crash with getActivity()
- 23. ¿Por qué os.path.join descarta argumentos?
- 24. PHP GD imagecreatefromstring descarta transparencia
- 25. Cómo utilizar Android DialogFragment setStyle()
- 26. Descarta los calificadores de error
- 27. DialogFragment set height of Dialog
- 28. ExecuteNonQuery() devuelve -1 en Actualizar cuando se actualizan los registros
- 29. Actualizar campo automáticamente cuando se cambia un campo diferente
- 30. Actualizar una actividad de servicio cuando se activa
Esto informa al 'DialogFragment' que ha sido descartado, pero no es el fragmento principal, que es lo que hizo la pregunta. – howettl
El padre puede usar estos métodos para obtener una devolución de llamada y responder cuando se descarta. Ver esta respuesta para el uso: http: // stackoverflow.com/a/29518363/445348 – cottonBallPaws