Fix crash when rotating NFC dialog

Bug: 18710540
Change-Id: I0f50a8aed555439e8beeff70276d646fc11afe0a
This commit is contained in:
Andres Morales
2015-04-21 12:43:03 -07:00
parent 0ce64e26c0
commit aef794a289
2 changed files with 47 additions and 8 deletions

View File

@@ -102,6 +102,7 @@ public class WifiSettings extends RestrictedSettingsFragment
// Instance state keys
private static final String SAVE_DIALOG_EDIT_MODE = "edit_mode";
private static final String SAVE_DIALOG_ACCESS_POINT_STATE = "wifi_ap_state";
private static final String SAVED_WIFI_NFC_DIALOG_STATE = "wifi_nfc_dlg_state";
private static boolean savedNetworksExist;
@@ -133,6 +134,7 @@ public class WifiSettings extends RestrictedSettingsFragment
private boolean mDlgEdit;
private AccessPoint mDlgAccessPoint;
private Bundle mAccessPointSavedState;
private Bundle mWifiNfcDialogSavedState;
private WifiTracker mWifiTracker;
@@ -200,6 +202,11 @@ public class WifiSettings extends RestrictedSettingsFragment
mAccessPointSavedState =
savedInstanceState.getBundle(SAVE_DIALOG_ACCESS_POINT_STATE);
}
if (savedInstanceState.containsKey(SAVED_WIFI_NFC_DIALOG_STATE)) {
mWifiNfcDialogSavedState =
savedInstanceState.getBundle(SAVED_WIFI_NFC_DIALOG_STATE);
}
}
// if we're supposed to enable/disable the Next button based on our current connection
@@ -341,6 +348,12 @@ public class WifiSettings extends RestrictedSettingsFragment
outState.putBundle(SAVE_DIALOG_ACCESS_POINT_STATE, mAccessPointSavedState);
}
}
if (mWifiToNfcDialog != null && mWifiToNfcDialog.isShowing()) {
Bundle savedState = new Bundle();
mWifiToNfcDialog.saveState(savedState);
outState.putBundle(SAVED_WIFI_NFC_DIALOG_STATE, savedState);
}
}
@Override
@@ -530,10 +543,15 @@ public class WifiSettings extends RestrictedSettingsFragment
case WRITE_NFC_DIALOG_ID:
if (mSelectedAccessPoint != null) {
mWifiToNfcDialog = new WriteWifiConfigToNfcDialog(
getActivity(), mSelectedAccessPoint, mWifiManager);
return mWifiToNfcDialog;
getActivity(), mSelectedAccessPoint.getConfig().networkId,
mSelectedAccessPoint.getSecurity(),
mWifiManager);
} else if (mWifiNfcDialogSavedState != null) {
mWifiToNfcDialog = new WriteWifiConfigToNfcDialog(
getActivity(), mWifiNfcDialogSavedState, mWifiManager);
}
return mWifiToNfcDialog;
}
return super.onCreateDialog(dialogId);
}