5
我有一個DialogFragment
本應該是簡單的,但它給了我特別是對Jelly Bean的一些大問題。DialogFragment崩潰調用startActivity()時的活動()
該應用程序使用網絡,它彈出一個對話框,要求用戶打開WiFi或取消然後關閉它。因此,它擴展DialogFragment
和創建視圖:
@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;
}
如果用戶點擊是,它否定了對話,並打開無線設置活動。或者,如果用戶點擊取消它只是關閉我的整個活動,但是在果凍豆,只要我單擊是,它並打開設置,但應用程序的作用下與以下錯誤關閉:
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)
有一些額外的記錄顯示出在我的佈局,這應該是SettingsDialogFragment
2號的每個片段的保存狀態只是一個null
:
08-05 20:24:22.576: E/FragmentManager(2579): #2: null
我想不排除在對話,但它墜毀相同的方式。
我真的不知道這裏發生了什麼......任何想法?
編輯:
活動代碼(這是一種正常的活動,因爲該應用程序的目標ICS及以上):
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();
}
你能把所有相關的代碼放到一個PasteBin中嗎?這個錯誤也可能在你的'FragmentActivity'中。 – tolgap 2012-08-05 20:49:31
@tolgap我在我的Activity上有兩個簡單的方法,我只是將它們包含在帖子中。該活動調用一個或另一個來自API的回調函數和dimPses OnPause() – Budius 2012-08-05 22:48:42
有趣的是,更多的那些不可理解的片段IllegalStateExceptions ...我以爲我已經看到了所有。 – Ixx 2012-08-05 23:19:43