diff --git a/src/com/android/settings/deviceinfo/storage/StorageSelectionPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageSelectionPreferenceController.java
index 2ab0239..5d5a2a5 100644
--- a/src/com/android/settings/deviceinfo/storage/StorageSelectionPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/storage/StorageSelectionPreferenceController.java
@@ -75,7 +75,7 @@
         mStorageAdapter.addAll(storageEntries);
 
         if (mSpinnerPreference != null) {
-            mSpinnerPreference.setClickable(mStorageAdapter.getCount() > 1);
+            mSpinnerPreference.setVisible(mStorageAdapter.getCount() > 1);
         }
     }
 
@@ -97,7 +97,7 @@
         mSpinnerPreference = screen.findPreference(getPreferenceKey());
         mSpinnerPreference.setAdapter(mStorageAdapter);
         mSpinnerPreference.setOnItemSelectedListener(this);
-        mSpinnerPreference.setClickable(mStorageAdapter.getCount() > 1);
+        mSpinnerPreference.setVisible(mStorageAdapter.getCount() > 1);
     }
 
     @Override
diff --git a/tests/unit/src/com/android/settings/deviceinfo/storage/StorageSelectionPreferenceControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/storage/StorageSelectionPreferenceControllerTest.java
index 86351cb..f4661ef 100644
--- a/tests/unit/src/com/android/settings/deviceinfo/storage/StorageSelectionPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/deviceinfo/storage/StorageSelectionPreferenceControllerTest.java
@@ -18,6 +18,8 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.Mockito.mock;
+
 import android.content.Context;
 import android.os.Looper;
 import android.os.storage.StorageManager;
@@ -33,6 +35,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -47,9 +50,20 @@
 
     @Before
     public void setUp() throws Exception {
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
         mContext = ApplicationProvider.getApplicationContext();
         mStorageManager = mContext.getSystemService(StorageManager.class);
         mController = new StorageSelectionPreferenceController(mContext, PREFERENCE_KEY);
+
+        final PreferenceManager preferenceManager = new PreferenceManager(mContext);
+        final PreferenceScreen preferenceScreen =
+                preferenceManager.createPreferenceScreen(mContext);
+        final SettingsSpinnerPreference spinnerPreference = new SettingsSpinnerPreference(mContext);
+        spinnerPreference.setKey(PREFERENCE_KEY);
+        preferenceScreen.addPreference(spinnerPreference);
+        mController.displayPreference(preferenceScreen);
     }
 
     @Test
@@ -70,16 +84,6 @@
 
     @Test
     public void setSelectedStorageEntry_primaryStorage_correctSelectedAdapterItem() {
-        if (Looper.myLooper() == null) {
-            Looper.prepare();
-        }
-        final PreferenceManager preferenceManager = new PreferenceManager(mContext);
-        final PreferenceScreen preferenceScreen =
-                preferenceManager.createPreferenceScreen(mContext);
-        final SettingsSpinnerPreference spinnerPreference = new SettingsSpinnerPreference(mContext);
-        spinnerPreference.setKey(PREFERENCE_KEY);
-        preferenceScreen.addPreference(spinnerPreference);
-        mController.displayPreference(preferenceScreen);
         final StorageEntry primaryStorageEntry =
                 StorageEntry.getDefaultInternalStorageEntry(mContext);
         mController.setStorageEntries(mStorageManager.getVolumes().stream()
@@ -91,5 +95,26 @@
         assertThat((StorageEntry) mController.mSpinnerPreference.getSelectedItem())
                 .isEqualTo(primaryStorageEntry);
     }
+
+    @Test
+    public void setStorageEntries_1StorageEntry_preferenceInvisible() {
+        final List<StorageEntry> storageEntries = new ArrayList<>();
+        storageEntries.add(mock(StorageEntry.class));
+
+        mController.setStorageEntries(storageEntries);
+
+        assertThat(mController.mSpinnerPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void setStorageEntries_2StorageEntries_preferenceVisible() {
+        final List<StorageEntry> storageEntries = new ArrayList<>();
+        storageEntries.add(mock(StorageEntry.class));
+        storageEntries.add(mock(StorageEntry.class));
+
+        mController.setStorageEntries(storageEntries);
+
+        assertThat(mController.mSpinnerPreference.isVisible()).isTrue();
+    }
 }
 
