diff --git a/conductor/src/main/java/com/bluelinelabs/conductor/Controller.java b/conductor/src/main/java/com/bluelinelabs/conductor/Controller.java index e5c1f1ad..0b5425b0 100644 --- a/conductor/src/main/java/com/bluelinelabs/conductor/Controller.java +++ b/conductor/src/main/java/com/bluelinelabs/conductor/Controller.java @@ -387,6 +387,13 @@ public final Controller getTargetController() { return null; } + /** + * Called when this Controller's View has been created. + * + * @param view The View for this Controller (passed for convenience) + */ + protected void onViewCreated(@NonNull View view) { } + /** * Called when this Controller's View is being destroyed. This should overridden to unbind the View * from any local variables. @@ -1013,6 +1020,7 @@ final View inflate(@NonNull ViewGroup parent) { if (view == parent) { throw new IllegalStateException("Controller's onCreateView method returned the parent ViewGroup. Perhaps you forgot to pass false for LayoutInflater.inflate's attachToRoot parameter?"); } + onViewCreated(view); listeners = new ArrayList<>(lifecycleListeners); for (LifecycleListener lifecycleListener : listeners) { diff --git a/conductor/src/test/java/com/bluelinelabs/conductor/util/CallState.java b/conductor/src/test/java/com/bluelinelabs/conductor/util/CallState.java index 9d7c7c70..69ceb009 100644 --- a/conductor/src/test/java/com/bluelinelabs/conductor/util/CallState.java +++ b/conductor/src/test/java/com/bluelinelabs/conductor/util/CallState.java @@ -8,6 +8,7 @@ public class CallState implements Parcelable { public int changeStartCalls; public int changeEndCalls; public int createViewCalls; + public int onViewCreatedCalls; public int attachCalls; public int destroyViewCalls; public int detachCalls; diff --git a/conductor/src/test/java/com/bluelinelabs/conductor/util/TestController.java b/conductor/src/test/java/com/bluelinelabs/conductor/util/TestController.java index 5175386b..e4f21211 100644 --- a/conductor/src/test/java/com/bluelinelabs/conductor/util/TestController.java +++ b/conductor/src/test/java/com/bluelinelabs/conductor/util/TestController.java @@ -45,6 +45,12 @@ protected View onCreateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup return view; } + @Override + protected void onViewCreated(@NonNull View view) { + super.onViewCreated(view); + currentCallState.onViewCreatedCalls++; + } + @Override protected void onChangeStarted(@NonNull ControllerChangeHandler changeHandler, @NonNull ControllerChangeType changeType) { super.onChangeStarted(changeHandler, changeType); diff --git a/demo/src/main/java/com/bluelinelabs/conductor/demo/controllers/ArchLifecycleController.java b/demo/src/main/java/com/bluelinelabs/conductor/demo/controllers/ArchLifecycleController.java index 04b3ce1e..ad635cbc 100644 --- a/demo/src/main/java/com/bluelinelabs/conductor/demo/controllers/ArchLifecycleController.java +++ b/demo/src/main/java/com/bluelinelabs/conductor/demo/controllers/ArchLifecycleController.java @@ -69,6 +69,12 @@ protected View onCreateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup return view; } + @Override + protected void onViewCreated(@NonNull View view) { + super.onViewCreated(view); + Log.i(TAG, "Conductor: onViewCreated() called"); + } + @Override protected void onAttach(@NonNull View view) { Log.i(TAG, "Conductor: onAttach() called"); diff --git a/demo/src/main/java/com/bluelinelabs/conductor/demo/controllers/AutodisposeController.java b/demo/src/main/java/com/bluelinelabs/conductor/demo/controllers/AutodisposeController.java index 517fbfa7..f8c42164 100644 --- a/demo/src/main/java/com/bluelinelabs/conductor/demo/controllers/AutodisposeController.java +++ b/demo/src/main/java/com/bluelinelabs/conductor/demo/controllers/AutodisposeController.java @@ -88,6 +88,12 @@ public void accept(Long num) { return view; } + @Override + protected void onViewCreated(@NonNull View view) { + super.onViewCreated(view); + Log.i(TAG, "Conductor: onViewCreated() called"); + } + @Override protected void onAttach(@NonNull View view) { super.onAttach(view); diff --git a/demo/src/main/java/com/bluelinelabs/conductor/demo/controllers/RxLifecycle2Controller.java b/demo/src/main/java/com/bluelinelabs/conductor/demo/controllers/RxLifecycle2Controller.java index cefc07b7..fd63cd76 100644 --- a/demo/src/main/java/com/bluelinelabs/conductor/demo/controllers/RxLifecycle2Controller.java +++ b/demo/src/main/java/com/bluelinelabs/conductor/demo/controllers/RxLifecycle2Controller.java @@ -85,6 +85,12 @@ public void accept(Long num) { return view; } + @Override + protected void onViewCreated(@NonNull View view) { + super.onViewCreated(view); + Log.i(TAG, "Conductor: onViewCreated() called"); + } + @Override protected void onAttach(@NonNull View view) { super.onAttach(view); diff --git a/demo/src/main/java/com/bluelinelabs/conductor/demo/controllers/RxLifecycleController.java b/demo/src/main/java/com/bluelinelabs/conductor/demo/controllers/RxLifecycleController.java index 72bea75c..b0849fb4 100644 --- a/demo/src/main/java/com/bluelinelabs/conductor/demo/controllers/RxLifecycleController.java +++ b/demo/src/main/java/com/bluelinelabs/conductor/demo/controllers/RxLifecycleController.java @@ -85,6 +85,12 @@ public void call(Long num) { return view; } + @Override + protected void onViewCreated(@NonNull View view) { + super.onViewCreated(view); + Log.i(TAG, "Conductor: onViewCreated() called"); + } + @Override protected void onAttach(@NonNull View view) { super.onAttach(view);