【问题标题】:What is causing crash in android.support.v4.app.Fragment.setUserVisibleHint()?是什么导致 android.support.v4.app.Fragment.setUserVisibleHint() 崩溃?
【发布时间】:2020-01-22 11:22:28
【问题描述】:

最近以来,我在我的应用程序的 crashlytics 中看到了以下崩溃的几次发生:

Fragment.java 第 960 行 android.support.v4.app.Fragment.setUserVisibleHint

Fatal Exception: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: android.support.v7.widget.RecyclerView$SavedState
       at android.os.Parcel.readParcelableCreator + 2855(Parcel.java:2855)
       at android.os.Parcel.readParcelable + 2781(Parcel.java:2781)
       at android.os.Parcel.readValue + 2684(Parcel.java:2684)
       at android.os.Parcel.readSparseArrayInternal + 3134(Parcel.java:3134)
       at android.os.Parcel.readSparseArray + 2367(Parcel.java:2367)
       at android.os.Parcel.readValue + 2741(Parcel.java:2741)
       at android.os.Parcel.readArrayMapInternal + 3053(Parcel.java:3053)
       at android.os.BaseBundle.initializeFromParcelLocked + 288(BaseBundle.java:288)
       at android.os.BaseBundle.unparcel + 232(BaseBundle.java:232)
       at android.os.BaseBundle.putBoolean + 569(BaseBundle.java:569)
       at android.support.v4.app.Fragment.setUserVisibleHint + 960(Fragment.java:960)
       at android.support.v4.app.FragmentStatePagerAdapter.instantiateItem + 121(FragmentStatePagerAdapter.java:121)
       at android.support.v4.view.ViewPager.addNewItem + 1004(ViewPager.java:1004)
       at android.support.v4.view.ViewPager.populate + 1186(ViewPager.java:1186)
       at android.support.v4.view.ViewPager.populate + 1086(ViewPager.java:1086)
       at android.support.v4.view.ViewPager$3.run + 267(ViewPager.java:267)
       at android.view.Choreographer$CallbackRecord.run + 986(Choreographer.java:986)
       at android.view.Choreographer.doCallbacks + 764(Choreographer.java:764)
       at android.view.Choreographer.doFrame + 696(Choreographer.java:696)
       at android.view.Choreographer$FrameDisplayEventReceiver.run + 965(Choreographer.java:965)
       at android.os.Handler.handleCallback + 873(Handler.java:873)
       at android.os.Handler.dispatchMessage + 99(Handler.java:99)
       at android.os.Looper.loop + 214(Looper.java:214)
       at android.app.ActivityThread.main + 7073(ActivityThread.java:7073)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run + 494(RuntimeInit.java:494)
       at com.android.internal.os.ZygoteInit.main + 965(ZygoteInit.java:965)

我无法重现崩溃。

有谁知道是什么原因造成的?

【问题讨论】:

    标签: android android-fragments android-appcompat androidx


    【解决方案1】:

    显然,崩溃是由支持兼容库之一中的错误引起的,'com.android.support:appcompat-v7:28.0.0''com.android.support:support-compat:28.0.0'

    迁移到AndroidX 反而解决了这个问题。

    使用 Android Studio 3.2 及更高版本,您可以迁移现有的 通过选择 Refactor > Migrate to AndroidX from 项目到 AndroidX 菜单栏。

    信息:

    AndroidX 将原来的支持库 API 替换为 androidx 命名空间。只有包和 Maven 工件名称 改变了;类、方法和字段名称没有改变。

    AndroidX 是一个重新设计的库,使包名称更加清晰。所以 从现在开始,android 层次结构将仅适用于 android 默认 类,自带android操作系统等 库/依赖项将成为 androidx 的一部分(更有意义)。所以 从现在开始,所有的新开发都将在 androidx 中更新。

    Google 不再支持原始支持库:

    版本 28.0.0 是支持库的最后一个版本。

    【讨论】:

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