Grundsätzlich habe ich einen Login-Bildschirm, in dem Benutzer ihre E-Mail-Adresse und ihr Passwort eingeben. Nachdem sie ihre Daten eingereicht haben, überprüfe ich, ob sie ihre E-Mail-Adresse bestätigt haben . Wenn nicht, zeige ich einen Dialog mit einer entsprechenden Nachricht an. In diesem Dialog gebe ich ihnen eine neutrale Schaltfläche, um eine neue Bestätigungs-E-Mail anzufordern, falls sie noch keine erhalten haben. Wenn sie auf diese Schaltfläche geklickt haben, möchte ich einen weiteren Dialog mit einer Nachricht anzeigen, dass die E-Mail erfolgreich gesendet wurde. Das Problem ist, dass, wenn ich den zweiten Dialog aus dem OnClickListener des ersten Dialogs erstelle und zeige, der zweite Dialog instanziiert, aber dann sofort zerstört wird. Also meine Frage ist, warum passiert das und wie implementiere ich diese Art von Funktionalität, so dass jedes Fragment, das gezeigt wird, während der Rotation beibehalten wird?Der zweite Dialog wird automatisch gelöscht, wenn er im OnClickListener des ersten Dialogs erstellt wird.
NotVerifiedEmailDialog.java (erster Dialog):
public class NotVerifiedEmailDialog extends DialogFragment
{
private static final String TAG = "NotVerifiedEmailDialog";
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
return new AlertDialog.Builder(getActivity())
.setTitle(R.string.email_not_verified)
.setMessage(R.string.email_not_verified_message)
.setPositiveButton(android.R.string.ok, null)
.setNeutralButton(R.string.request_new_email, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialogInterface, int which)
{
EmailSentDialog dialog = new EmailSentDialog();
dialog.show(getChildFragmentManager(), dialog.getMyTag());
}
})
.create();
}
public String getMyTag()
{
return TAG;
}
}
EmailSentDialog.java (zweiter Dialog):
public class EmailSentDialog extends DialogFragment
{
private static final String TAG = "EmailSentDialog";
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
return new AlertDialog.Builder(getActivity())
.setTitle(R.string.success)
.setMessage(R.string.email_sent_message)
.setPositiveButton(android.R.string.ok, null)
.create();
}
public String getMyTag()
{
return TAG;
}
}
Versucht es, aber das gleiche passiert. – techie