DialogFragment stürzt ab Aktivität beim Aufruf von startActivity ()

Ich habe einDialogFragment Das sollte eigentlich einfach sein, aber es gibt mir einige große Probleme speziell bei Jelly Bean.

Die App verwendet das Netzwerk und es wird ein Dialogfeld angezeigt, in dem der Benutzer aufgefordert wird, WLAN zu aktivieren oder abzubrechen. Anschließend wird das Dialogfeld geschlossen. So erstreckt es sichDialogFragment und erstellt Ansicht als:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    AlertDialog a = new AlertDialog.Builder(getActivity()).setCancelable(true).setTitle(R.string.dialog_title_disabled)
            .setMessage(R.string.dialog_text)
            .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        dismiss();
                        Intent i = new Intent(Settings.ACTION_WIRELESS_SETTINGS);
                        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(i);
                    }
            }).setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        getActivity().finish();
                    }
            }).create();
    //a.setCanceledOnTouchOutside(false);
    return a;
}

Wenn der Benutzer auf Ja klickt, wird das Dialogfeld geschlossen und die Aktivität Drahtloseinstellungen geöffnet. Wenn der Benutzer auf Abbrechen klickt, wird nur meine gesamte Aktivität geschlossen, aber bei Jelly Bean werden die Einstellungen jedes Mal geöffnet, wenn ich auf Ja klicke. Die App Force wird jedoch mit dem folgenden Fehler geschlossen:

08-05 20:24:22.584: E/AndroidRuntime(2579): java.lang.IllegalStateException: Failure saving state: active SettingsDialogFragment{425dd550} has cleared index: -1
08-05 20:24:22.584: E/AndroidRuntime(2579):     at android.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1653)

Es gibt eine zusätzliche Protokollierung, die den gespeicherten Status jedes Fragments in meinem Layout und die Nummer 2 anzeigt, die das sein sollteSettingsDialogFragment ist nur einnull:

08-05 20:24:22.576: E/FragmentManager(2579):     #2: null

Ich habe versucht, den Dialog nicht zu schließen, aber er ist genauso abgestürzt.

Ich bin mir wirklich nicht sicher, was hier los ist ... Irgendwelche Ideen?

BEARBEITEN:

Der Aktivitätscode (es ist eine normale Aktivität, da die App auf ICS und höher abzielt):

private void showDialog() {
    SettingsDialogFragment diag = (SettingsDialogFragment) getFragmentManager().findFragmentByTag(DIALOG_TAG);
    if (diag == null) {
        diag = new SettingsDialogFragment();
        diag.show(getFragmentManager(), DIALOG_TAG);
    } else {
        if (!diag.isVisible())
            diag.show(getFragmentManager(), DIALOG_TAG);
    }
}

private void dismissDialog() {
    SettingsDialogFragment diag = (SettingsDialogFragment) getFragmentManager().findFragmentByTag(DIALOG_TAG);
    if (diag != null)
        diag.dismiss();
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage