【问题标题】:Crash in Activity Transitions with SharedElementSharedElement 在活动转换中崩溃
【发布时间】: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


【解决方案1】:

尝试从 FragmentManager 获取片段:

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

如果片段为空,请尝试创建一个新片段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 2015-06-01
    • 2023-03-22
    相关资源
    最近更新 更多