Fix bug #15939648 "Use TalkBack ?" is shown after orientation change even if it was OFF before

- prevent onSaveInstanceState() on the ToggleSwitch
- fix missing setOnCheckedChangeListener() when restoring the SwitchBar state

Change-Id: I818577004f142be46fa378389f264c7f37cfd7b8
diff --git a/src/com/android/settings/widget/SwitchBar.java b/src/com/android/settings/widget/SwitchBar.java
index b503cf6..46b71ef 100644
--- a/src/com/android/settings/widget/SwitchBar.java
+++ b/src/com/android/settings/widget/SwitchBar.java
@@ -19,11 +19,9 @@
 import android.content.Context;
 import android.os.Parcel;
 import android.os.Parcelable;
-import android.transition.TransitionManager;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.view.ViewGroup;
 import android.widget.CompoundButton;
 import android.widget.LinearLayout;
 
@@ -73,6 +71,9 @@
         mTextView.setText(R.string.switch_off_text);
 
         mSwitch = (ToggleSwitch) findViewById(R.id.switch_widget);
+        // Prevent onSaveInstanceState() to be called as we are managing the state of the Switch
+        // on our own
+        mSwitch.setSaveEnabled(false);
 
         addOnSwitchChangeListener(new OnSwitchChangeListener() {
             @Override
@@ -134,7 +135,7 @@
     @Override
     public void onClick(View v) {
         final boolean isChecked = !mSwitch.isChecked();
-        mSwitch.setChecked(isChecked);
+        setChecked(isChecked);
     }
 
     public void propagateChecked(boolean isChecked) {
@@ -222,9 +223,12 @@
         SavedState ss = (SavedState) state;
 
         super.onRestoreInstanceState(ss.getSuperState());
-        mSwitch.setChecked(ss.checked);
+
+        mSwitch.setCheckedInternal(ss.checked);
         setTextViewLabel(ss.checked);
         setVisibility(ss.visible ? View.VISIBLE : View.GONE);
+        mSwitch.setOnCheckedChangeListener(ss.visible ? this : null);
+
         requestLayout();
     }
 }