diff --git a/src/com/android/customization/picker/CustomizationPickerActivity.java b/src/com/android/customization/picker/CustomizationPickerActivity.java
index 93339be..357b755 100644
--- a/src/com/android/customization/picker/CustomizationPickerActivity.java
+++ b/src/com/android/customization/picker/CustomizationPickerActivity.java
@@ -40,8 +40,11 @@
 import com.android.customization.model.theme.ThemeBundle;
 import com.android.customization.model.theme.ThemeManager;
 import com.android.customization.picker.clock.ClockFragment;
+import com.android.customization.picker.clock.ClockFragment.ClockFragmentHost;
 import com.android.customization.picker.grid.GridFragment;
+import com.android.customization.picker.grid.GridFragment.GridFragmentHost;
 import com.android.customization.picker.theme.ThemeFragment;
+import com.android.customization.picker.theme.ThemeFragment.ThemeFragmentHost;
 import com.android.wallpaper.R;
 import com.android.wallpaper.model.WallpaperInfo;
 import com.android.wallpaper.module.DailyLoggingAlarmScheduler;
@@ -67,7 +70,7 @@
  *  Fragments providing customization options.
  */
 public class CustomizationPickerActivity extends FragmentActivity implements WallpapersUiContainer,
-        CategoryFragmentHost {
+        CategoryFragmentHost, ThemeFragmentHost, GridFragmentHost, ClockFragmentHost {
 
     private static final String TAG = "CustomizationPickerActivity";
 
@@ -213,6 +216,24 @@
         return mDelegate;
     }
 
+    @Override
+    public ClockManager getClockManager() {
+        CustomizationSection section = mSections.get(R.id.nav_clock);
+        return section == null ? null : (ClockManager) section.customizationManager;
+    }
+
+    @Override
+    public GridOptionsManager getGridOptionsManager() {
+        CustomizationSection section = mSections.get(R.id.nav_grid);
+        return section == null ? null : (GridOptionsManager) section.customizationManager;
+    }
+
+    @Override
+    public ThemeManager getThemeManager() {
+        CustomizationSection section = mSections.get(R.id.nav_theme);
+        return section == null ? null : (ThemeManager) section.customizationManager;
+    }
+
     /**
      * Represents a section of the Picker (eg "ThemeBundle", "Clock", etc).
      * There should be a concrete subclass per available section, providing the corresponding
@@ -224,11 +245,11 @@
          * IdRes used to identify this section in the BottomNavigationView menu.
          */
         @IdRes final int id;
-        protected final CustomizationManager<T> mCustomizationManager;
+        protected final CustomizationManager<T> customizationManager;
 
         private CustomizationSection(@IdRes int id, CustomizationManager<T> manager) {
             this.id = id;
-            this.mCustomizationManager = manager;
+            this.customizationManager = manager;
         }
 
         /**
@@ -276,8 +297,7 @@
         @Override
         Fragment getFragment() {
             if (mFragment == null) {
-                mFragment = ThemeFragment.newInstance(getString(R.string.theme_title),
-                        (ThemeManager) mCustomizationManager);
+                mFragment = ThemeFragment.newInstance(getString(R.string.theme_title));
             }
             return mFragment;
         }
@@ -294,8 +314,7 @@
         @Override
         Fragment getFragment() {
             if (mFragment == null) {
-                mFragment = GridFragment.newInstance(getString(R.string.grid_title),
-                        (GridOptionsManager) mCustomizationManager);
+                mFragment = GridFragment.newInstance(getString(R.string.grid_title));
             }
             return mFragment;
         }
@@ -312,8 +331,7 @@
         @Override
         Fragment getFragment() {
             if (mFragment == null) {
-                mFragment = ClockFragment.newInstance(getString(R.string.clock_title),
-                        (ClockManager) mCustomizationManager);
+                mFragment = ClockFragment.newInstance(getString(R.string.clock_title));
             }
             return mFragment;
         }
diff --git a/src/com/android/customization/picker/clock/ClockFragment.java b/src/com/android/customization/picker/clock/ClockFragment.java
index 3436c22..7a6afe2 100644
--- a/src/com/android/customization/picker/clock/ClockFragment.java
+++ b/src/com/android/customization/picker/clock/ClockFragment.java
@@ -36,11 +36,20 @@
 import com.android.wallpaper.R;
 import com.android.wallpaper.picker.ToolbarFragment;
 
+/**
+ * Fragment that contains the main UI for selecting and applying a Clockface.
+ */
 public class ClockFragment extends ToolbarFragment {
 
-    public static ClockFragment newInstance(CharSequence title, ClockManager manager) {
+    /**
+     * Interface to be implemented by an Activity hosting a {@link ClockFragment}
+     */
+    public interface ClockFragmentHost {
+        ClockManager getClockManager();
+    }
+
+    public static ClockFragment newInstance(CharSequence title) {
         ClockFragment fragment = new ClockFragment();
-        fragment.setManager(manager);
         fragment.setArguments(ToolbarFragment.createArguments(title));
         return fragment;
     }
@@ -51,6 +60,12 @@
     private ClockManager mClockManager;
     private PreviewPager mPreviewPager;
 
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        mClockManager = ((ClockFragmentHost) context).getClockManager();
+    }
+
     @Nullable
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@@ -68,10 +83,6 @@
         return view;
     }
 
-    private void setManager(ClockManager manager) {
-        mClockManager = manager;
-    }
-
     private void createAdapter() {
         mPreviewPager.setAdapter(new ClockPreviewAdapter(getContext(), mSelectedOption));
     }
diff --git a/src/com/android/customization/picker/grid/GridFragment.java b/src/com/android/customization/picker/grid/GridFragment.java
index 20fa720..a38d268 100644
--- a/src/com/android/customization/picker/grid/GridFragment.java
+++ b/src/com/android/customization/picker/grid/GridFragment.java
@@ -16,6 +16,7 @@
 package com.android.customization.picker.grid;
 
 import android.app.Activity;
+import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.drawable.BitmapDrawable;
 import android.net.Uri;
@@ -53,26 +54,37 @@
  */
 public class GridFragment extends ToolbarFragment {
 
+    /**
+     * Interface to be implemented by an Activity hosting a {@link GridFragment}
+     */
+    public interface GridFragmentHost {
+        GridOptionsManager getGridOptionsManager();
+    }
+
+    public static GridFragment newInstance(CharSequence title) {
+        GridFragment fragment = new GridFragment();
+        fragment.setArguments(ToolbarFragment.createArguments(title));
+        return fragment;
+    }
+
     private boolean mIsWallpaperInfoReady;
     private WallpaperInfo mHomeWallpaper;
     private float mScreenAspectRatio;
     private int mPageHeight;
     private int mPageWidth;
     private GridPreviewAdapter mAdapter;
-
-    public static GridFragment newInstance(CharSequence title, GridOptionsManager manager) {
-        GridFragment fragment = new GridFragment();
-        fragment.setManager(manager);
-        fragment.setArguments(ToolbarFragment.createArguments(title));
-        return fragment;
-    }
-
     private RecyclerView mOptionsContainer;
     private OptionSelectorController mOptionsController;
     private GridOptionsManager mGridManager;
     private GridOption mSelectedOption;
     private PreviewPager mPreviewPager;
 
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        mGridManager = ((GridFragmentHost) context).getGridOptionsManager();
+    }
+
     @Nullable
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@@ -114,10 +126,6 @@
         return view;
     }
 
-    private void setManager(GridOptionsManager manager) {
-        mGridManager = manager;
-    }
-
     private void createAdapter() {
         mAdapter = new GridPreviewAdapter(mSelectedOption);
         mPreviewPager.setAdapter(mAdapter);
diff --git a/src/com/android/customization/picker/theme/ThemeFragment.java b/src/com/android/customization/picker/theme/ThemeFragment.java
index 3ca2a52..f89df60 100644
--- a/src/com/android/customization/picker/theme/ThemeFragment.java
+++ b/src/com/android/customization/picker/theme/ThemeFragment.java
@@ -47,9 +47,15 @@
  */
 public class ThemeFragment extends ToolbarFragment {
 
-    public static ThemeFragment newInstance(CharSequence title, ThemeManager manager) {
+    /**
+     * Interface to be implemented by an Activity hosting a {@link ThemeFragment}
+     */
+    public interface ThemeFragmentHost {
+        ThemeManager getThemeManager();
+    }
+
+    public static ThemeFragment newInstance(CharSequence title) {
         ThemeFragment fragment = new ThemeFragment();
-        fragment.setManager(manager);
         fragment.setArguments(ToolbarFragment.createArguments(title));
         return fragment;
     }
@@ -61,6 +67,12 @@
     private PagerAdapter mAdapter;
     private PreviewPager mPreviewPager;
 
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        mThemeManager = ((ThemeFragmentHost) context).getThemeManager();
+    }
+
     @Nullable
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@@ -80,10 +92,6 @@
         return view;
     }
 
-    private void setManager(ThemeManager manager) {
-        mThemeManager = manager;
-    }
-
     private void createAdapter() {
         mAdapter = new ThemePreviewAdapter(getContext(), mSelectedTheme);
         mPreviewPager.setAdapter(mAdapter);
