diff --git a/conductor/src/main/java/com/bluelinelabs/conductor/Controller.java b/conductor/src/main/java/com/bluelinelabs/conductor/Controller.java index 3ff5264..f1ac272 100644 --- a/conductor/src/main/java/com/bluelinelabs/conductor/Controller.java +++ b/conductor/src/main/java/com/bluelinelabs/conductor/Controller.java @@ -8,7 +8,6 @@ import android.content.IntentSender; import android.content.res.Resources; import android.os.Build; import android.os.Bundle; -import android.os.Handler; import android.os.Parcelable; import android.support.annotation.IdRes; import android.support.annotation.NonNull; @@ -732,8 +731,8 @@ public abstract class Controller { return false; } - final void setNeedsAttach() { - needsAttach = true; + final void setNeedsAttach(boolean needsAttach) { + this.needsAttach = needsAttach; } final void prepareForHostDetach() { diff --git a/conductor/src/main/java/com/bluelinelabs/conductor/ControllerChangeHandler.java b/conductor/src/main/java/com/bluelinelabs/conductor/ControllerChangeHandler.java index 921fcb6..c4131e2 100644 --- a/conductor/src/main/java/com/bluelinelabs/conductor/ControllerChangeHandler.java +++ b/conductor/src/main/java/com/bluelinelabs/conductor/ControllerChangeHandler.java @@ -218,6 +218,10 @@ public abstract class ControllerChangeHandler { ((ViewGroup)fromParent).removeView(fromView); } } + + if (handler.removesFromViewOnPush() && from != null) { + from.setNeedsAttach(false); + } } }); } diff --git a/conductor/src/main/java/com/bluelinelabs/conductor/Router.java b/conductor/src/main/java/com/bluelinelabs/conductor/Router.java index 7a30e5d..86a89c4 100644 --- a/conductor/src/main/java/com/bluelinelabs/conductor/Router.java +++ b/conductor/src/main/java/com/bluelinelabs/conductor/Router.java @@ -577,7 +577,7 @@ public abstract class Router { void prepareForHostDetach() { for (RouterTransaction transaction : backstack) { if (ControllerChangeHandler.completeHandlerImmediately(transaction.controller.getInstanceId())) { - transaction.controller.setNeedsAttach(); + transaction.controller.setNeedsAttach(true); } transaction.controller.prepareForHostDetach(); }