Kann ich irgendwie feststellen, wenn ein DialogFragment abgewiesen wird, damit ich sein Elternfragment aktualisieren kann?Fragment aktualisieren, wenn das Dialogfragment beendet wird
Antwort
Überschreiben Sie onDismiss() von DialogFragment oder legen Sie beim Erstellen des zugrunde liegenden Dialogfelds einen Listener mit setOnDimissListener() fest.
Eine Möglichkeit, dies zu umgehen ist Ihr DialogFragment innerhalb einer Aktivität einzubetten und die Aktivität als Dialog angezeigt werden, gibt es eine Spitze in den folgenden Link, der erklärt, wie:
http://developer.android.com/guide/topics/ui/dialogs.html
Sie diese verwenden können um das zugrunde liegende Fragment zu aktualisieren, da onResume() für das zugrunde liegende Fragment aufgerufen wird, wenn der Dialog (der eine Aktivität ist) beendet wird. Fügen Sie Code hinzu, um den Status des Fragments in der onResume() -Methode zu aktualisieren, und das ist alles, was es auch gibt.
Ich denke, das ist der beste Ansatz, aber was ist mit API 8+? Dies wurde in API 11 hinzugefügt. – Iree
Ich habe das gerade in meinem Projekt gelöst. Was ich habe, ist eine Aktivität mit einem ListFragment. Wenn in diesem Listenfragment auf ein bestimmtes Element geklickt wird, zeige ich ein DatePickerFragment (ein benutzerdefiniertes DialogFragment, das einen DatePickerDialog anzeigt) an. Wenn ein Datum ausgewählt ist, möchte ich, dass das ListFragment aktualisiert wird.
Um dies zu erreichen, in der Aktivität, die die ListFragment Gastgeber (und es beherbergt auch das DatePickerFragment, wie in der Tat) ich eine Methode implementiert, die einfach die ListFragment mit einer neuen Instanz ersetzt, etwa so:
public void criteriaChanged()
{
getFragmentManager().beginTransaction()
.replace(R.id.container, new FilterFragment())
.commit();
}
ich nenne diese Methode aus dem DatePickerFragment, von onDateSet():
FilterActivity fa = (FilterActivity) getActivity();
fa.criteriaChanged();
Dieser den Trick für mich.
Sie können einen Listener hinzufügen und das onDismiss Ihrer Fragment Dialog außer Kraft setzen:
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);
}
}
}
Dann wird auf der Eltern richten Sie einen Hörer:
DismissDialog d = new DismissDialog();
d.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
});
d.show(getSupportFragmentManager(), "sometag");
Dies ist die richtige Antwort – FireZenk
versuchte ich @Gazer Antwort, es nicht für mich arbeiten, ich bin mit verschiedenem Fragmente Klasse
import android.app.Fragment;
Aber ich habe diese Arbeit
Eine Interface-Klasse
public interface MyDialogListener { void OnCloseDialog(Object obj); //you can put any object here }
Implementieren Sie die Interface-Klasse in dem Elternfragment
public class ActionBarFragment extends Fragment implements MyDialogListener{ @Override public void OnCloseDialog(Object obj) { //Do you refresh }
und dann füge ich den Hörer in den 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. Update-Fragment von Dialogfragment
- 2. Adapter in einem Fragment nach DialogFragment aktualisieren dbflow einfügen
- 3. Dismissed Dialogfragment wird wieder angezeigt, wenn App fortgesetzt wird
- 4. Der Alarm wird beendet, wenn das Betriebssystem die App beendet
- 5. Aufruf von DialogFragment aus Fragment
- 6. wie zwischen Fragment und dialogFragment
- 7. OnCancelListener wird in DialogFragment
- 8. DialogFragment löst ClassCastException aus, wenn sie von Fragment
- 9. Aktualisieren Sie das Fragment, wenn Elemente von ListView gelöscht werden
- 10. Das Programm wird nicht beendet, wenn clj-statsd verwendet wird
- 11. Wird der ausgelöffte Speicher freigegeben, wenn das Programm beendet wird?
- 12. Wie wird ein DialogFragment durch ein anderes DialogFragment ersetzt?
- 13. Fragment onCreate mehrmals aufgerufen, wenn das Fragment
- 14. Aktualisieren Sie das aktuelle Fragment in FragmentPagerAdapter
- 15. Android Fragment zeigt als dialogfragment oder gewöhnliches Fragment
- 16. Fragment aktualisieren, wenn ein anderes Fragment das Fragmentmodell des ersten Elements ändert
- 17. Tastatur ausblenden, wenn DialogFragment auf dem Tablet angezeigt wird?
- 18. iPython reagiert nicht, während das Programm ausgeführt wird. Wird antworten, wenn das Programm beendet wird
- 19. Wie aktualisiert man das Fragment, wenn die Registerkarte geöffnet wird?
- 20. DialogFragment wird immer skaliert, wenn die Tastatur geöffnet wird
- 21. Wie wird HTML5-Video eingeblendet, wenn das Laden beendet ist?
- 22. Beenden Sie Child-Threads, wenn das übergeordnete Thread beendet wird
- 23. Wie erkennt man, wenn das AVPlayer-Video beendet wird?
- 24. Fragment in Slidebar aktualisieren
- 25. Textansicht in Aktivität aktualisieren von Fragment
- 26. Handle-Back-Taste, wenn das letzte Fragment ausgelöst wird
- 27. UploadServiceBroadcastReceiver wird beendet, wenn die Aktivität beendet ist
- 28. Fragment Android aktualisieren
- 29. Gibt es ein Zeitlimit für das Startskript, das beendet wird, bevor es beendet wird?
- 30. DialogFragment von einem anderen DialogFragment anzeigen
Dies informiert das 'DialogFragment', dass es abgewiesen wurde, aber nicht sein Elternfragment, was die Frage war. – howettl
Das übergeordnete Element kann diese Methoden verwenden, um einen Rückruf zu erhalten und zu antworten, wenn es abgewiesen wird. Siehe diese Antwort für die Verwendung: http: // stackoverflow.com/a/29518363/445348 – cottonBallPaws