diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 4ca1c2c..cde2aca 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -62,6 +62,7 @@
 import com.android.settings.core.gateway.SettingsGateway;
 import com.android.settings.dashboard.DashboardFeatureProvider;
 import com.android.settings.dashboard.DashboardSummary;
+import com.android.settings.homepage.TopLevelSettings;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.DeviceIndexFeatureProvider;
 import com.android.settings.wfd.WifiDisplaySettings;
@@ -403,8 +404,13 @@
             // Show search icon as up affordance if we are displaying the main Dashboard
             mInitialTitleResId = R.string.dashboard_title;
 
-            switchToFragment(DashboardSummary.class.getName(), null /* args */, false, false,
-                    mInitialTitleResId, mInitialTitle, false);
+            if (SettingsHomepageActivity.isDynamicHomepageEnabled(this)) {
+                switchToFragment(TopLevelSettings.class.getName(), null /* args */, false, false,
+                        mInitialTitleResId, mInitialTitle, false);
+            } else {
+                switchToFragment(DashboardSummary.class.getName(), null /* args */, false, false,
+                        mInitialTitleResId, mInitialTitle, false);
+            }
         }
     }
 
diff --git a/src/com/android/settings/SettingsHomepageActivity.java b/src/com/android/settings/SettingsHomepageActivity.java
index de25cf4..77155e0 100644
--- a/src/com/android/settings/SettingsHomepageActivity.java
+++ b/src/com/android/settings/SettingsHomepageActivity.java
@@ -29,6 +29,7 @@
 import com.android.settings.core.SettingsBaseActivity;
 import com.android.settings.dashboard.DashboardSummary;
 import com.android.settings.homepage.PersonalSettingsFragment;
+import com.android.settings.homepage.TopLevelSettings;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.SearchFeatureProvider;
 
@@ -58,8 +59,7 @@
         FeatureFactory.getFactory(this).getSearchFeatureProvider()
                 .initSearchToolbar(this, searchButton);
 
-        final BottomNavigationView navigation = (BottomNavigationView) findViewById(
-                R.id.bottom_nav);
+        final BottomNavigationView navigation = findViewById(R.id.bottom_nav);
         navigation.setOnNavigationItemSelectedListener(item -> {
             switch (item.getItemId()) {
                 case R.id.homepage_personal_settings:
@@ -68,7 +68,7 @@
                     return true;
 
                 case R.id.homepage_all_settings:
-                    switchFragment(DashboardSummary.class.getName(), ALL_SETTINGS_TAG,
+                    switchFragment(TopLevelSettings.class.getName(), ALL_SETTINGS_TAG,
                             PERSONAL_SETTINGS_TAG);
                     return true;
             }
diff --git a/src/com/android/settings/homepage/PersonalSettingsFragment.java b/src/com/android/settings/homepage/PersonalSettingsFragment.java
index b515e29..1894e5e 100644
--- a/src/com/android/settings/homepage/PersonalSettingsFragment.java
+++ b/src/com/android/settings/homepage/PersonalSettingsFragment.java
@@ -54,7 +54,7 @@
             Bundle savedInstanceState) {
         final View rootView = inflater.inflate(R.layout.settings_homepage,
                 container, false);
-        mCardsContainer = (RecyclerView) rootView.findViewById(R.id.card_container);
+        mCardsContainer = rootView.findViewById(R.id.card_container);
         mLayoutManager = new GridLayoutManager(getActivity(), SPAN_COUNT,
                 LinearLayoutManager.VERTICAL, false /* reverseLayout */);
         mCardsContainer.setLayoutManager(mLayoutManager);
