Fix the problem that the "Turn off SIM" dialog will be displayed
when the MobileNetwork page is slid to to top.

- Update the onBindViewHolder method of
  SettingsMainSwitchPreference. The root cause is that the
  onBindViewHolder method reset the visibility state of the
  SwitchBar.

Fix: 190652161
Test: robotest and test MobileNetwork page manually.
Change-Id: If0a75579fd4bf0fe987ce5d11d2f11d10f4bc43c
diff --git a/src/com/android/settings/widget/SettingsMainSwitchPreference.java b/src/com/android/settings/widget/SettingsMainSwitchPreference.java
index de7d692..09e1ca4 100644
--- a/src/com/android/settings/widget/SettingsMainSwitchPreference.java
+++ b/src/com/android/settings/widget/SettingsMainSwitchPreference.java
@@ -82,15 +82,15 @@
         holder.setDividerAllowedAbove(false);
         holder.setDividerAllowedBelow(false);
 
-        mMainSwitchBar = (SettingsMainSwitchBar) holder.findViewById(R.id.main_switch_bar);
-        mMainSwitchBar.show();
         if (mRestrictedHelper != null) {
             mEnforcedAdmin = mRestrictedHelper.checkRestrictionEnforced();
         }
-        updateStatus(isChecked());
-        registerListenerToSwitchBar();
-
-        if (!mIsVisible) {
+        mMainSwitchBar = (SettingsMainSwitchBar) holder.findViewById(R.id.main_switch_bar);
+        if (mIsVisible) {
+            mMainSwitchBar.show();
+            updateStatus(isChecked());
+            registerListenerToSwitchBar();
+        } else {
             mMainSwitchBar.hide();
         }
     }
diff --git a/tests/robotests/src/com/android/settings/widget/SettingsMainSwitchPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/SettingsMainSwitchPreferenceTest.java
index cb53805..c0c4fd7 100644
--- a/tests/robotests/src/com/android/settings/widget/SettingsMainSwitchPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/widget/SettingsMainSwitchPreferenceTest.java
@@ -24,6 +24,10 @@
 import android.view.View;
 import android.widget.ImageView;
 
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.settings.R;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -39,6 +43,7 @@
     @Mock
     private EnforcedAdmin mEnforcedAdmin;
     private SettingsMainSwitchPreference mPreference;
+    private PreferenceViewHolder mHolder;
 
     @Before
     public void setUp() {
@@ -48,6 +53,9 @@
         mPreference = new SettingsMainSwitchPreference(context);
         ReflectionHelpers.setField(mPreference, "mEnforcedAdmin", mEnforcedAdmin);
         ReflectionHelpers.setField(mPreference, "mMainSwitchBar", switchBar);
+        final View rootView = View.inflate(context, R.layout.preference_widget_main_switch,
+                null /* parent */);
+        mHolder = PreferenceViewHolder.createInstanceForTests(rootView);
     }
 
     @Test
@@ -60,4 +68,22 @@
 
         assertThat(restrictedIcon.getVisibility() == View.VISIBLE).isTrue();
     }
+
+    @Test
+    public void show_preferenceShouldDisplay() {
+        mPreference.show();
+
+        mPreference.onBindViewHolder(mHolder);
+
+        assertThat(mPreference.isShowing()).isTrue();
+    }
+
+    @Test
+    public void hide_preferenceShouldNotDisplay() {
+        mPreference.hide();
+
+        mPreference.onBindViewHolder(mHolder);
+
+        assertThat(mPreference.isShowing()).isFalse();
+    }
 }