diff --git a/conductor-support/src/main/java/com/bluelinelabs/conductor/support/ControllerPagerAdapter.java b/conductor-support/src/main/java/com/bluelinelabs/conductor/support/ControllerPagerAdapter.java
index <HASH>..<HASH> 100644
--- a/conductor-support/src/main/java/com/bluelinelabs/conductor/support/ControllerPagerAdapter.java
+++ b/conductor-support/src/main/java/com/bluelinelabs/conductor/support/ControllerPagerAdapter.java
@@ -53,12 +53,17 @@ public abstract class ControllerPagerAdapter extends PagerAdapter {
             }
         }
 
+        final Controller controller;
         if (!router.hasRootController()) {
-            Controller controller = getItem(position);
+            controller = getItem(position);
             router.setRoot(RouterTransaction.with(controller).tag(name));
-            visiblePageIds.put(position, controller.getInstanceId());
         } else {
             router.rebindIfNeeded();
+            controller = router.getControllerWithTag(name);
+        }
+
+        if (controller != null) {
+            visiblePageIds.put(position, controller.getInstanceId());
         }
 
         return router.getControllerWithTag(name);
@@ -139,4 +144,4 @@ public abstract class ControllerPagerAdapter extends PagerAdapter {
         return viewId + ":" + id;
     }
 
-}
\ No newline at end of file
+}
Fixes issue when retrieving an existing controller from a ControllerPagerAdapter (#<I>)