Fix WPS dialog reset while device orientation change
Fixed WPS dialog reset to default upon device
orientation change by restoring instance state
cherry-picked from partner:klp-wireless-dev
SHA1 a85fb02ba1357cde3017e5e0705d3792332bf999
Bug: 13231785
Change-Id: Ic63b14da9d0d9856150214bfc194f6dfcb431087
diff --git a/src/com/android/settings/wifi/WpsDialog.java b/src/com/android/settings/wifi/WpsDialog.java
index 2a93884..662d477 100644
--- a/src/com/android/settings/wifi/WpsDialog.java
+++ b/src/com/android/settings/wifi/WpsDialog.java
@@ -27,7 +27,6 @@
import android.net.wifi.WpsInfo;
import android.os.Bundle;
import android.os.Handler;
-import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
@@ -45,6 +44,8 @@
public class WpsDialog extends AlertDialog {
private final static String TAG = "WpsDialog";
+ private static final String DIALOG_STATE = "android:dialogState";
+ private static final String DIALOG_MSG_STRING = "android:dialogMsg";
private View mView;
private TextView mTextView;
@@ -64,6 +65,7 @@
private Context mContext;
private Handler mHandler = new Handler();
+ private String mMsgString = "";
private enum DialogState {
WPS_INIT,
@@ -128,6 +130,25 @@
handleEvent(context, intent);
}
};
+ setCanceledOnTouchOutside(false);
+ }
+
+ @Override
+ public Bundle onSaveInstanceState () {
+ Bundle bundle = super.onSaveInstanceState();
+ bundle.putString(DIALOG_STATE, mDialogState.toString());
+ bundle.putString(DIALOG_MSG_STRING, mMsgString.toString());
+ return bundle;
+ }
+
+ @Override
+ public void onRestoreInstanceState(Bundle savedInstanceState) {
+ if (savedInstanceState != null) {
+ super.onRestoreInstanceState(savedInstanceState);
+ DialogState dialogState = mDialogState.valueOf(savedInstanceState.getString(DIALOG_STATE));
+ String msg = savedInstanceState.getString(DIALOG_MSG_STRING);
+ updateDialog(dialogState, msg);
+ }
}
@Override
@@ -207,6 +228,7 @@
return;
}
mDialogState = state;
+ mMsgString = msg;
mHandler.post(new Runnable() {
@Override