在安卓上出现了同类别的类转换异常

19

我在安卓上遇到了一个奇怪的ClassCastException问题。一个类无法被转换为相同的类:

java.lang.RuntimeException: Unable to start activity ComponentInfo: java.lang.ClassCastException: com.example.model.BadeWrapper cannot be cast to com.example.model.BadgeWrapper

java.lang.ClassCastException: com.example.events.widgets.TouchyWebView cannot be cast to com.example.events.widgets.TouchyWebView

java.lang.ClassCastException: com.example.friends.widgets.FriendsTabView cannot be cast to com.example.friends.widgets.FriendsTabView

当我找到有错误的代码行时,它只是通过ID查找视图或使用参数创建片段,例如:

FriendsTabView friendsTabView;
friendsTabView = (FriendsTabView) view.findViewById(R.id.friends_bottom_tab_panel);
根据我的BugSense,这个问题只在三星Galaxy S5上发生,使用的是Android 5.0.0系统(三星SM-G900F)。我在其他设备上从未遇到过这个问题:Motorola Moto G第一代(Android 5.0.1)、三星Galaxy S3 Mini(Android 4.1.2)、LG G2 Mini(Android 4.4.2)和Sony Xperia L(Android 4.1.2)。有人遇到过这个问题吗?有什么方法可以解决吗?

你能发布XML布局的相关部分吗?如果有的话,还能提供FriendsTabView的Java类和使用FriendsTabView的Java文件吗? - OcuS
没关系,问题出在三星Galaxy S5设备上,看我的回答。 - rwojcik
1个回答

25

好的,我知道问题出在哪里了。看起来三星在 Android 5.0 上可能仍然使用旧版 multidex 实现(在 Android L 预览版中使用),因此如果您的应用程序超过 64k 限制,则会在您使用 (ExampleClass) object 转换的应用程序随机位置崩溃。

有关此问题的更多信息,请单击此处此处

  

我们每天也看到这种崩溃发生数千次。Crashlytics 报告这个崩溃是 100% 的三星设备(99% 的 "SM G900F[Q]" 设备)和 100% 的 Android 5.x。似乎是另一个在三星 + 棒棒糖设备上出现的 multidex 问题,如 a.jaskev 在 #3 中报告的那样。

看起来我们必须等待三星解决这个问题。目前我们所能做的就是通过邮箱收集 bug 报告 :)


现在,由于这个问题,甚至Lolipop更新也被搁置了。 - rwojcik
三星:一次都不要。 - Michael Alan Huff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接