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
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index 17bf02d..bd9e331 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -182,8 +182,11 @@
+ 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 @@
mOnDismissListener.onDismiss(dialog);
}
}
+
public int getDialogId() {
return mDialogId;
}
@@ -211,9 +215,12 @@
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;
+ }
}
}
}