diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index 9a60876..1104672 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -113,7 +113,8 @@
                 }
             };
 
-    private ViewGroup mPinnedHeaderFrameLayout;
+    @VisibleForTesting
+    ViewGroup mPinnedHeaderFrameLayout;
     private ViewGroup mButtonBar;
 
     private LayoutPreference mHeader;
@@ -186,6 +187,10 @@
         mPinnedHeaderFrameLayout.setVisibility(View.VISIBLE);
     }
 
+    public void showPinnedHeader(boolean show) {
+        mPinnedHeaderFrameLayout.setVisibility(show ? View.VISIBLE : View.INVISIBLE);
+    }
+
     @Override
     public void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
diff --git a/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java b/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java
index 5e57908..876c999 100644
--- a/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java
+++ b/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java
@@ -44,8 +44,6 @@
 
     private static final String TAG = "AppAndNotifDashboard";
 
-    private View mProgressHeader;
-    private View mProgressAnimation;
     private RecentAppStatsMixin mRecentAppStatsMixin;
     private RecentAppsPreferenceController mRecentAppsPreferenceController;
     private AllAppsInfoPreferenceController mAllAppsInfoPreferenceController;
@@ -92,20 +90,19 @@
     @Override
     public void onViewCreated(View view, Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
-        mProgressHeader = setPinnedHeaderView(R.layout.progress_header);
-        mProgressAnimation = mProgressHeader.findViewById(R.id.progress_bar_animation);
-        setLoadingEnabled(false);
+        setPinnedHeaderView(R.layout.progress_header);
+        showPinnedHeader(false);
     }
 
     @Override
     public void onStart() {
         super.onStart();
-        setLoadingEnabled(true);
+        showPinnedHeader(true);
     }
 
     @Override
     public void onReloadDataCompleted(@NonNull List<UsageStats> recentApps) {
-        setLoadingEnabled(false);
+        showPinnedHeader(false);
         if (!recentApps.isEmpty()) {
             Utils.setActionBarShadowAnimation(getActivity(), getSettingsLifecycle(),
                     getListView());
@@ -117,13 +114,6 @@
         return buildPreferenceControllers(context);
     }
 
-    private void setLoadingEnabled(boolean enabled) {
-        if (mProgressHeader != null && mProgressAnimation != null) {
-            mProgressHeader.setVisibility(enabled ? View.VISIBLE : View.INVISIBLE);
-            mProgressAnimation.setVisibility(enabled ? View.VISIBLE : View.INVISIBLE);
-        }
-    }
-
     private static List<AbstractPreferenceController> buildPreferenceControllers(Context context) {
         final List<AbstractPreferenceController> controllers = new ArrayList<>();
         controllers.add(new EmergencyBroadcastPreferenceController(context,
