29
votes

I'm using Activity transitions from a ViewPager (in the calling activity) with a shared element and content transitions as well. I'm getting this crash when re-entering to the calling activity:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.os.ResultReceiver.send(int, android.os.Bundle)' on a null object reference
  at android.app.EnterTransitionCoordinator.sendSharedElementDestination(EnterTransitionCoordinator.java:199)
  at android.app.EnterTransitionCoordinator.viewsReady(EnterTransitionCoordinator.java:123)
  at android.app.EnterTransitionCoordinator$2.onPreDraw(EnterTransitionCoordinator.java:148)
  at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:895)
  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2153)
  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1180)
  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6558)
  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
  at android.view.Choreographer.doCallbacks(Choreographer.java:590)
  at android.view.Choreographer.doFrame(Choreographer.java:560)
  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
  at android.os.Handler.handleCallback(Handler.java:739)
  at android.os.Handler.dispatchMessage(Handler.java:95)
  at android.os.Looper.loop(Looper.java:145)
  at android.app.ActivityThread.main(ActivityThread.java:5832)
  at java.lang.reflect.Method.invoke(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:372)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)

Also, Once going back, the screen begins to flicker continuously with a white screen flashing in and out.

Here are my Transition flags:

<item name="android:windowContentTransitions">true</item>
<item name="android:windowActivityTransitions">true</item>
<item name="android:windowAllowReturnTransitionOverlap">false</item>

I tried setting Enter/Exit transitions both on the Calling and Called activity but no luck.

1
Wow, that's a new one. Ideally, you'd file a bug on this with an app that can reproduce it. It appears the the exiting activity set the ResultReceiver to null somehow. If you can't solve this in any other way, you can use finish() instead of finishAfterTransition() to avoid the activity transition, but it is quite strange. Is it possible that the exiting activity is being killed as the reentering activity is being launched?George Mount
@GeorgeMount don't think so. If A is the calling activity and B is the called activity then my logs when entering B are as follows: A: onPause B: onCreate B: onStart B: onResume B: onSaveInstanceState A: onStopOferM
And then when re-entering it should ideally be: A: onStart (crash is here) B: onPause A: onResume B: onStop B: onDestroyOferM
I've also noticed that the re-enter transition works for the first 2 fragments in the ViewPager and crashes consistently for the rest of the items. The ViewPager always holds the same fragment, so it's not a specific fragment issue.OferM
Noticed same issue occurring sometimes in my app when transitioning back from detail screen to collection screen having viewpager and both the screens have shared imageview showing transition animation.Ankur

1 Answers

0
votes

Try to get fragment from FragmentManager:

fragmentManager.findFragmentByTag("android:switcher:" + R.id.viewPager + ":" + position)

If fragment is null, try creating a new fragment.