Ich habe zwei Dialoge (DialogFragment-Instanzen), d1 und d2, die ich übereinander anzeige. D2 ist dabei quasi ein “Unter-Dialog” von d1. Soweit alles gut.
Wenn ich aber nun das Tablet drehe, dann kann es vorkommen (ist nicht immer so), dass der Hauptdialog (d1) über seinem “Unter-Dialog” (d2) liegt, obwohl es eigentlich anders herum sein sollte.
Hat jemand eine Idee, wie ich das beheben könnte!?
Innerer Dialog
[spoiler]
Ich habe eine View, die bei Click einen Dialog öffnen soll:
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
final InnerDialog dialog = new InnerDialog();
dialog.show(((Activity) getContext()).getFragmentManager(), "inner_dialog");
}
});
}
}```
Und die zugehörige Klasse `InnerDialog`:
``` public static final class InnerDialog extends GuiDialogFragment {
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
List<String> strings = // ... init stuff
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setItems(strings, new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int which) {
// .. on click stuff
}
});
final AlertDialog dialog = builder.create();
dialog.setCanceledOnTouchOutside(true);
return dialog;
}
}```
[/spoiler]
Äußerer Dialog
[spoiler]
Diese `MyView` wird in einem Dialog eingebunden (`outer_dialog.xml`):
[XML]<?xml version="1.0" encoding="utf-8"?>
<LinearLayout >
<de.natac.MyView/>
</LinearLayout>[/XML]
Dieses Layout nutze ich dann in einem Dialog, der mit Klick auf eine Andere View erzeugt wird:
```public class OuterDialog extends GuiDialogFragment {
@Override
public Dialog onCreateDialog(final Bundle savedState) {
final LayoutInflater inflater = LayoutInflater.from(getActivity());
final View view = inflater.inflate(R.layout.outer_dialog,null);// <-- Einbinden Layout outer_dialog.xml
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(view);
final AlertDialog dialog = builder.create();
dialog.setCanceledOnTouchOutside(true);
return dialog;
}
}```
Und hier noch der Code, wie `OuterDialog` erzeugt wird:
```public class TeamTourMedicView extends LinearLayout{
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
final View child = findViewById(R.id.child);
child.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
final OuterDialog dialog = new OuterDialog();
dialog.show(((Activity) getContext()).getFragmentManager(), "outer_dialog");
}
});
}
}```[/spoiler]
Das funktioniert in 90% der Fälle auch super. Nur manchmal erscheint der InnerDialog vor dem OuterDialog, wenn ich das Tablet drehe. Hat jemand eine Idee?