【发布时间】:2016-03-16 04:37:39
【问题描述】:
我正在使用来自 ViewPager(在调用活动中)的活动转换以及共享元素和内容转换。重新进入调用活动时,我遇到了这个崩溃:
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)
另外,一旦返回,屏幕开始连续闪烁,白屏闪烁。
这是我的转换标志:
<item name="android:windowContentTransitions">true</item>
<item name="android:windowActivityTransitions">true</item>
<item name="android:windowAllowReturnTransitionOverlap">false</item>
我尝试在 Calling 和 Called 活动上设置 Enter/Exit 转换,但没有成功。
【问题讨论】:
-
哇,这是一个新的。理想情况下,您应该使用可以重现它的应用程序对此提出错误。似乎现有的活动以某种方式将 ResultReceiver 设置为 null。如果不能用其他方法解决这个问题,可以用finish()代替finishAfterTransition()来避免activity的过渡,但是比较奇怪。当重新进入的活动正在启动时,退出的活动是否可能被杀死?
-
@GeorgeMount 不这么认为。如果A是调用活动,B是被调用活动,那么我进入B时的日志如下:A:onPause B:onCreate B:onStart B:onResume B:onSaveInstanceState A:onStop
-
然后重新进入时理想情况下应该是: A: onStart (crash is here) B: onPause A: onResume B: onStop B: onDestroy
-
我还注意到,重新输入过渡适用于 ViewPager 中的前 2 个片段,并且对于其余项目始终崩溃。 ViewPager 始终包含相同的片段,因此这不是特定的片段问题。
-
注意到在我的应用程序中有时会出现同样的问题,当从详细屏幕转换回具有 viewpager 的集合屏幕并且两个屏幕都共享显示转换动画的图像视图时。
标签: android android-5.0-lollipop shared-element-transition activity-transition