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?