From 8875edede1f441f66578feb4d09eb314ac40c25e Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Mon, 31 Jan 2011 12:46:57 -0800 Subject: [PATCH] Fix crash after adding a word to the user dictionary. Bug: 3407951 Make sure that the parent fragment is a SettingsPreferenceFragment. Otherwise it's not necessary to manage the mDialogFragment. Change-Id: I331a3507fe11a7331ff24ecf64fe8c8c3f613636 --- .../android/settings/SettingsPreferenceFragment.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java index 17bf02dc96..bd9e3318c1 100644 --- a/src/com/android/settings/SettingsPreferenceFragment.java +++ b/src/com/android/settings/SettingsPreferenceFragment.java @@ -182,8 +182,11 @@ public class SettingsPreferenceFragment extends PreferenceFragment + DialogCreatable.class.getName()); } } - // restore mDialogFragment in mParentFragment - ((SettingsPreferenceFragment) mParentFragment).mDialogFragment = this; + // This dialog fragment could be created from non-SettingsPreferenceFragment + if (mParentFragment instanceof SettingsPreferenceFragment) { + // restore mDialogFragment in mParentFragment + ((SettingsPreferenceFragment) mParentFragment).mDialogFragment = this; + } } return ((DialogCreatable) mParentFragment).onCreateDialog(mDialogId); } @@ -203,6 +206,7 @@ public class SettingsPreferenceFragment extends PreferenceFragment mOnDismissListener.onDismiss(dialog); } } + public int getDialogId() { return mDialogId; } @@ -211,9 +215,12 @@ public class SettingsPreferenceFragment extends PreferenceFragment public void onDetach() { super.onDetach(); - // in case the dialog is not explicitly removed by removeDialog() - if (((SettingsPreferenceFragment) mParentFragment).mDialogFragment == this) { - ((SettingsPreferenceFragment) mParentFragment).mDialogFragment = null; + // This dialog fragment could be created from non-SettingsPreferenceFragment + if (mParentFragment instanceof SettingsPreferenceFragment) { + // in case the dialog is not explicitly removed by removeDialog() + if (((SettingsPreferenceFragment) mParentFragment).mDialogFragment == this) { + ((SettingsPreferenceFragment) mParentFragment).mDialogFragment = null; + } } } } -- 2.11.0