Reihenfolge der Dialoge ändert sich beim drehen


#1

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!?


#2

Zeig mal ein bisschen Code

So aus der Luft greifen ist schwierig


#3

Code ist kein Problem, here we go:

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 [inline]InnerDialog[/inline]:
``` 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 [inline]MyView[/inline] wird in einem Dialog eingebunden ([inline]outer_dialog.xml[/inline]):
[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 [inline]OuterDialog[/inline] 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?