OSDN Git Service

Fix crash after adding a word to the user dictionary.
authorAmith Yamasani <yamasani@google.com>
Mon, 31 Jan 2011 20:46:57 +0000 (12:46 -0800)
committerAmith Yamasani <yamasani@google.com>
Mon, 31 Jan 2011 20:46:57 +0000 (12:46 -0800)
Bug: 3407951

Make sure that the parent fragment is a SettingsPreferenceFragment. Otherwise it's not
necessary to manage the mDialogFragment.

Change-Id: I331a3507fe11a7331ff24ecf64fe8c8c3f613636

src/com/android/settings/SettingsPreferenceFragment.java

index 17bf02d..bd9e331 100644 (file)
@@ -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;
+                }
             }
         }
     }