Ich habe Fragment mit EditTexts, die Benutzer ändern können.Auf der Suche nach dem besten Weg, modalen Dialog in OnPause zu implementieren
Neben habe ich wieder Symbolleiste auf der Schaltfläche (und physische auch Back-Button)
Wenn der Benutzer schlägt zurück, ich überprüfen, ob die Daten geändert wurden und wenn es - ich brauche Dialog zu öffnen und die Benutzer fragen "Möchten Sie Änderungen speichern?". Holen Sie den Klick und reagieren Sie entsprechend (positive oder negative Antwort).
Der beste Ort, um die Daten zu speichern (vielleicht falsch) ist in OnPause dieses Fragments.
Das Problem ist mit dem Dialog - es ist nicht modal und während es die Frage zeigt und auf Benutzerreaktion wartet - das Fragment darunter verschwindet und vorherige kommen zurück vom Stapel. Ich muss "onPause" mit dem Dialog anhalten, bis der Benutzer seine Wahl trifft. Was ist der einfache (oder korrekteste) Weg dies zu tun?
@Override
public void onPause() {
if (!(text.getText().toString().equals(user.getName())))
{
new MaterialDialog.Builder(getActivity())
.title("Save changes?")
.content("You changed you personal details, save changes?")
.cancelable(false)
.positiveText("Save")
.negativeText("Discard")
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
save();
}})
.show();
}
super.onPause();
}
Wenn ich will es vor onPause zu tun - ich brauche die Toolbar-Zurück-Taste und physischen Zurück-Taste fangen - scheint zu viel Arbeit dafür. Auf der Suche nach einem eleganten Weg.
Danke
Es ist ein Fragment. Es ist nicht auf BackPressed. – Shmuel
Ich habe meine Antwort aktualisiert – swerly