diff --git a/scoop/src/main/java/com/lyft/scoop/ViewController.java b/scoop/src/main/java/com/lyft/scoop/ViewController.java index 0698a2b..47f9ed0 100644 --- a/scoop/src/main/java/com/lyft/scoop/ViewController.java +++ b/scoop/src/main/java/com/lyft/scoop/ViewController.java @@ -4,6 +4,8 @@ public abstract class ViewController { + static final int VIEW_CONTROLLER_TAG = 0x80000001; + private boolean isDetaching = false; private boolean attached; private Scoop scoop; @@ -11,6 +13,8 @@ public abstract class ViewController { final void attach(View view) { this.view = view; + Scoop.viewBinder.bind(this, view); + view.setTag(VIEW_CONTROLLER_TAG, this); onAttach(); this.attached = true; if (this.isDetaching) { @@ -28,6 +32,8 @@ final void detach(View view) { this.isDetaching = true; if(this.attached) { onDetach(); + view.setTag(VIEW_CONTROLLER_TAG, null); + Scoop.viewBinder.unbind(this); this.view = null; this.attached = false; this.isDetaching = false; @@ -55,7 +61,7 @@ void setScoop(Scoop scoop) { static ViewController fromView(View view) { if (view != null) { - ViewController viewController = (ViewController) view.getTag(ViewControllerInflater.VIEW_CONTROLLER_TAG); + ViewController viewController = (ViewController) view.getTag(VIEW_CONTROLLER_TAG); return viewController; } diff --git a/scoop/src/main/java/com/lyft/scoop/ViewControllerInflater.java b/scoop/src/main/java/com/lyft/scoop/ViewControllerInflater.java index 1253a91..0556903 100644 --- a/scoop/src/main/java/com/lyft/scoop/ViewControllerInflater.java +++ b/scoop/src/main/java/com/lyft/scoop/ViewControllerInflater.java @@ -5,8 +5,6 @@ public class ViewControllerInflater { - static final int VIEW_CONTROLLER_TAG = 0x80000001; - protected ViewController createViewController(Scoop scoop, Class clazz) { try { return clazz.newInstance(); @@ -32,16 +30,13 @@ private static void bindViewControllerToView(final View view, final ViewControll final View.OnAttachStateChangeListener viewAttachListener = new View.OnAttachStateChangeListener() { @Override public void onViewAttachedToWindow(View v) { - Scoop.viewBinder.bind(viewController, v); viewController.attach(view); - view.setTag(VIEW_CONTROLLER_TAG, viewController); + } @Override public void onViewDetachedFromWindow(View v) { viewController.detach(view); - view.setTag(VIEW_CONTROLLER_TAG, null); - Scoop.viewBinder.unbind(viewController); } };