Android 切换到支持库的25.2.0版后发生奇怪的崩溃

Android 切换到支持库的25.2.0版后发生奇怪的崩溃,android,android-fragments,android-support-library,Android,Android Fragments,Android Support Library,我注意到,在切换到支持库的25.2.0版后,我的一些用户开始经历此崩溃: Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.support.v4.e.a.get(java.lang.Object)' on a null object reference at android.support.v4.app.Fragmen

我注意到,在切换到支持库的25.2.0版后,我的一些用户开始经历此崩溃:

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.support.v4.e.a.get(java.lang.Object)' on a null object reference
       at android.support.v4.app.FragmentTransition.getInEpicenterView(FragmentTransition.java:817)
       at android.support.v4.app.FragmentTransition.access$000$97c744e(FragmentTransition.java:37)
       at android.support.v4.app.FragmentTransition$4.run(FragmentTransition.java:657)
       at android.support.v4.app.OneShotPreDrawListener.onPreDraw(OneShotPreDrawListener.java:64)
       at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1982)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1073)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5903)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:828)
       at android.view.Choreographer.doCallbacks(Choreographer.java:588)
       at android.view.Choreographer.doFrame(Choreographer.java:558)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:814)
       at android.os.Handler.handleCallback(Handler.java:739)
我在网上四处寻找,但没有发现任何有意义的东西。还有谁能重现这次坠机?有人知道什么解决办法吗

更新

我找到了重现这次事故的方法。我的应用程序是使用单个活动和多个片段设置的。我有两个片段A和B,它们都显示一个项目列表。每个列表中的项目都是相同的,只是排序不同,并且使用了不同的布局。这两个片段都是“顶级片段”,我的意思是它们可以直接从导航抽屉访问

片段A是指定的“根片段”。这意味着回击最终将返回到片段A。因此,片段A被编码为试图从导航抽屉导航到它的方式是从片段回击堆栈中弹出所有项目。这似乎对再现崩溃很重要

点击片段A或B中的项目将打开片段C,项目视图用作从片段A或B到片段C的转换效果的共享元素。我可以通过点击片段B中的项目,然后打开导航抽屉并选择片段A来重现此崩溃

我现在正在调查是什么导致了这次撞车,以及我能做些什么来解决它

更新2

我已经查明了导致这次崩溃的确切代码。给定片段A和B,以及A->B的共享元素转换。复制步骤如下:

  • 将A推到后堆栈
  • 从A导航到B(将播放共享元素转换)
  • 通过
    getSupportFragmentManager().popbackbackstack(null,0)将所有内容从后堆栈中弹出
  • 观察碰撞
    我已经向谷歌提交了一个bug,因为它似乎是一个支持库bug。如果有人有任何解决办法,我仍然接受答案。

    也有这个问题。当用户在使用共享元素作为快速修复的屏幕上时,我临时锁定了导航抽屉。但是它在支持libs 25.3.0时看起来是固定的

    你能更新你的帖子来包含你的代码吗?你在使用proguard吗?@Drew不幸的是,我实际上不知道如何重现这个问题,因此我不知道应该包含什么代码。我希望其他人可能也经历过同样的事情,并能分享给他们这个错误的原因。@fillobotto是的。但是,我假设模糊代码不是我自己做的,因为您可以看到堆栈跟踪的其余部分没有模糊。但我可能错了。问题来自共享元素。这个片段有共享元素吗?