Ich haben ein DialogFragment, dass mit einem AsyncTask verbunden ist, weswegen ich [c]retain[/c] für das Fragment auf TRUE setze.
DialogFragment.java
MyActivity.java
Ich zeige den Dialog an, und wenn sich das Tablet dreht, zeige ich ihn erneut an... theoretisch. Praktisch scheint der FragmentManager aber gar nichts von meinem DialogFragment zu wissen und gibt jedesmal null zurück, womit der Dialog natürlich nicht erscheint.
Irgend jemand eine Idee? :rtfm:
DialogFragment.java
Java:
public class Dialog extends DialogFragment{
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);// Flag setzen
}
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
final LayoutInflater inflater = getActivity().getLayoutInflater();
final View dialogContent = inflater.inflate(R.layout.dialog, null);
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setPositiveButton("Close", null);
//TODO: hier task starten
return builder.create();
}
}
MyActivity.java
Java:
public class MyActivity extends Activity {
public boolean onOptionsItemSelected(final MenuItem item) {
// Show dialog on any selection (for testing)
final DialogFragment dialog = new Dialog();
dialog.show(getFragmentManager(), "dialog");
return true;
}
protected void onRestoreInstanceState(final Bundle state) {
super.onRestoreInstanceState(state);
final DialogFragment dialog = (DialogFragment) getFragmentManager().findFragmentByTag("dialog");
if (dialog != null) { // WTF? dialog ist IMMER NULL
dialog.show(getFragmentManager(), "dialog");//re-show dialog
}
}
Ich zeige den Dialog an, und wenn sich das Tablet dreht, zeige ich ihn erneut an... theoretisch. Praktisch scheint der FragmentManager aber gar nichts von meinem DialogFragment zu wissen und gibt jedesmal null zurück, womit der Dialog natürlich nicht erscheint.
Irgend jemand eine Idee? :rtfm:
Zuletzt bearbeitet: