bluelinelabs / bluelinelabs/Conductor
onBackPressed during transition animation
- Dominant language
- Java
- Stars
- 3.9k
- Forks
- 338
- PR merge metrics
- No merged PRs in 30d
Description
I noticed recently while using the ArcCircularRevealChangeHandler that if I press the back button mid-transition animation, effectively executing my MainActivity onBackPressed override:
```
if (!router.handleBack()) {
super.onBackPressed();
}
```
that I get the following exception thrown:
```
E/InputEventSender: Exception dispatching finished signal.
10-27 13:26:12.396 12788-12788/com.*.* E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
10-27 13:26:12.399 12788-12788/com.*.* E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'android.animation.Animator android.animation.Animator.setDuration(long)' on a null object reference
at com.bluelinelabs.conductor.changehandler.AnimatorChangeHandler.performAnimation(AnimatorChangeHandler.java:179)
at com.bluelinelabs.conductor.changehandler.AnimatorChangeHandler.performChange(AnimatorChangeHandler.java:139)
at com.bluelinelabs.conductor.ControllerChangeHandler.executeChange(ControllerChangeHandler.java:204)
at com.bluelinelabs.conductor.ControllerChangeHandler.executeChange(ControllerChangeHandler.java:154)
at com.bluelinelabs.conductor.Router.performControllerChange(Router.java:813)
at com.bluelinelabs.conductor.Router.performControllerChange(Router.java:783)
at com.bluelinelabs.conductor.Router.performControllerChange(Router.java:765)
at com.bluelinelabs.conductor.Router.popController(Router.java:137)
at com.bluelinelabs.conductor.Router.popCurrentController(Router.java:119)
at com.bluelinelabs.conductor.Router.handleBack(Router.java:97)
at com.*.*.activities.MainActivity.onBackPressed(MainActivity.java:213)
at android.app.Activity.onKeyUp(Activity.java:2725)
at android.view.KeyEvent.dispatch(KeyEvent.java:2699)
at android.app.Activity.dispatchKeyEvent(Activity.java:3026)
at android.support.v7.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:534)
at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:58)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:316)
at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:317)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4327)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4298)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3849)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3902)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3868)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3995)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3876)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4052)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3849)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3902)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3868)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3876)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3849)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3902)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3868)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4028)
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4189)
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2365)
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1961)
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1952)
at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2342)
at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:323)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
```
My original thought was that I could simply wrap my above call to router.handleBack() in a NPE try/catch but if I do this then my entire interface locks and no touches function after the exception is thrown.
Any help/direction is appreciated!
Contributor guide
Assessment
This issue has not been assessed yet.