Fixed a crash when rotating a saved networks dialog.
Bug: 16972819 Change-Id: I83d00df974f8c6692697d59ea71e93f193fa5066
This commit is contained in:
@@ -53,6 +53,9 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
|
|||||||
private Bundle mAccessPointSavedState;
|
private Bundle mAccessPointSavedState;
|
||||||
private AccessPoint mSelectedAccessPoint;
|
private AccessPoint mSelectedAccessPoint;
|
||||||
|
|
||||||
|
// Instance state key
|
||||||
|
private static final String SAVE_DIALOG_ACCESS_POINT_STATE = "wifi_ap_state";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@@ -69,6 +72,13 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
|
|||||||
public void onActivityCreated(Bundle savedInstanceState) {
|
public void onActivityCreated(Bundle savedInstanceState) {
|
||||||
super.onActivityCreated(savedInstanceState);
|
super.onActivityCreated(savedInstanceState);
|
||||||
mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
|
mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
|
||||||
|
|
||||||
|
if (savedInstanceState != null) {
|
||||||
|
if (savedInstanceState.containsKey(SAVE_DIALOG_ACCESS_POINT_STATE)) {
|
||||||
|
mAccessPointSavedState =
|
||||||
|
savedInstanceState.getBundle(SAVE_DIALOG_ACCESS_POINT_STATE);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initPreferences() {
|
private void initPreferences() {
|
||||||
@@ -150,6 +160,11 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
|
|||||||
public Dialog onCreateDialog(int dialogId) {
|
public Dialog onCreateDialog(int dialogId) {
|
||||||
switch (dialogId) {
|
switch (dialogId) {
|
||||||
case WifiSettings.WIFI_DIALOG_ID:
|
case WifiSettings.WIFI_DIALOG_ID:
|
||||||
|
if (mDlgAccessPoint == null) { // For re-launch from saved state
|
||||||
|
mDlgAccessPoint = new AccessPoint(getActivity(), mAccessPointSavedState);
|
||||||
|
// Reset the saved access point data
|
||||||
|
mAccessPointSavedState = null;
|
||||||
|
}
|
||||||
mSelectedAccessPoint = mDlgAccessPoint;
|
mSelectedAccessPoint = mDlgAccessPoint;
|
||||||
mDialog = new WifiDialog(getActivity(), this, mDlgAccessPoint, false);
|
mDialog = new WifiDialog(getActivity(), this, mDlgAccessPoint, false);
|
||||||
return mDialog;
|
return mDialog;
|
||||||
@@ -158,6 +173,20 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
|
|||||||
return super.onCreateDialog(dialogId);
|
return super.onCreateDialog(dialogId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSaveInstanceState(Bundle outState) {
|
||||||
|
super.onSaveInstanceState(outState);
|
||||||
|
|
||||||
|
// If the dialog is showing, save its state.
|
||||||
|
if (mDialog != null && mDialog.isShowing()) {
|
||||||
|
if (mDlgAccessPoint != null) {
|
||||||
|
mAccessPointSavedState = new Bundle();
|
||||||
|
mDlgAccessPoint.saveWifiState(mAccessPointSavedState);
|
||||||
|
outState.putBundle(SAVE_DIALOG_ACCESS_POINT_STATE, mAccessPointSavedState);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialogInterface, int button) {
|
public void onClick(DialogInterface dialogInterface, int button) {
|
||||||
if (button == WifiDialog.BUTTON_FORGET && mSelectedAccessPoint != null) {
|
if (button == WifiDialog.BUTTON_FORGET && mSelectedAccessPoint != null) {
|
||||||
|
Reference in New Issue
Block a user