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
This commit is contained in:
Amith Yamasani
2011-01-31 12:46:57 -08:00
parent 171412000a
commit 8875edede1

View File

@@ -182,8 +182,11 @@ public class SettingsPreferenceFragment extends PreferenceFragment
+ DialogCreatable.class.getName()); + DialogCreatable.class.getName());
} }
} }
// restore mDialogFragment in mParentFragment // This dialog fragment could be created from non-SettingsPreferenceFragment
((SettingsPreferenceFragment) mParentFragment).mDialogFragment = this; if (mParentFragment instanceof SettingsPreferenceFragment) {
// restore mDialogFragment in mParentFragment
((SettingsPreferenceFragment) mParentFragment).mDialogFragment = this;
}
} }
return ((DialogCreatable) mParentFragment).onCreateDialog(mDialogId); return ((DialogCreatable) mParentFragment).onCreateDialog(mDialogId);
} }
@@ -203,6 +206,7 @@ public class SettingsPreferenceFragment extends PreferenceFragment
mOnDismissListener.onDismiss(dialog); mOnDismissListener.onDismiss(dialog);
} }
} }
public int getDialogId() { public int getDialogId() {
return mDialogId; return mDialogId;
} }
@@ -211,9 +215,12 @@ public class SettingsPreferenceFragment extends PreferenceFragment
public void onDetach() { public void onDetach() {
super.onDetach(); super.onDetach();
// in case the dialog is not explicitly removed by removeDialog() // This dialog fragment could be created from non-SettingsPreferenceFragment
if (((SettingsPreferenceFragment) mParentFragment).mDialogFragment == this) { if (mParentFragment instanceof SettingsPreferenceFragment) {
((SettingsPreferenceFragment) mParentFragment).mDialogFragment = null; // in case the dialog is not explicitly removed by removeDialog()
if (((SettingsPreferenceFragment) mParentFragment).mDialogFragment == this) {
((SettingsPreferenceFragment) mParentFragment).mDialogFragment = null;
}
} }
} }
} }