Fix bug #12993929 Screen orientation change replaces wifi password dialog with Add network dialog
- use the correct Fragment manager: it should be the child's one
Change-Id: I286b276bc6c5180b7c0e458d8562938671d493c8
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index d91c11b..35893ff 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -144,7 +144,7 @@
Log.e(TAG, "Old dialog fragment not null!");
}
mDialogFragment = new SettingsDialogFragment(this, dialogId);
- mDialogFragment.show(getActivity().getFragmentManager(), Integer.toString(dialogId));
+ mDialogFragment.show(getChildFragmentManager(), Integer.toString(dialogId));
}
public Dialog onCreateDialog(int dialogId) {
@@ -233,17 +233,15 @@
public Dialog onCreateDialog(Bundle savedInstanceState) {
if (savedInstanceState != null) {
mDialogId = savedInstanceState.getInt(KEY_DIALOG_ID, 0);
+ mParentFragment = getParentFragment();
int mParentFragmentId = savedInstanceState.getInt(KEY_PARENT_FRAGMENT_ID, -1);
- if (mParentFragmentId > -1) {
- mParentFragment = getFragmentManager().findFragmentById(mParentFragmentId);
- if (!(mParentFragment instanceof DialogCreatable)) {
- throw new IllegalArgumentException(
- (mParentFragment != null
- ? mParentFragment.getClass().getName()
- : mParentFragmentId)
- + " must implement "
- + DialogCreatable.class.getName());
- }
+ if (!(mParentFragment instanceof DialogCreatable)) {
+ throw new IllegalArgumentException(
+ (mParentFragment != null
+ ? mParentFragment.getClass().getName()
+ : mParentFragmentId)
+ + " must implement "
+ + DialogCreatable.class.getName());
}
// This dialog fragment could be created from non-SettingsPreferenceFragment
if (mParentFragment instanceof SettingsPreferenceFragment) {