Android上的同类的类强制转换异常

rwo*_*cik 19 android classcastexception findviewbyid

我在Android上遇到了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
Run Code Online (Sandbox Code Playgroud)

当我找到有错误的行时,它所做的就是通过id查找视图或使用参数创建片段,例如:

FriendsTabView friendsTabView;
friendsTabView = (FriendsTabView) view.findViewById(R.id.friends_bottom_tab_panel);
Run Code Online (Sandbox Code Playgroud)

正如我的BugSense所说,这个问题只发生在带有android 5.0.0(三星SM-G900F)的三星Galaxy S5上.我在其他设备上从未遇到过这个问题:

  • 摩托罗拉Moto G第一代(Android 5.0.1)
  • 三星Galaxy S3 Mini(Android 4.1.2)
  • LG G2 Mini(Android 4.4.2)
  • 索尼Xperia L(Android 4.1.2)

有没有人遇到过这个问题?有没有办法解决它?

rwo*_*cik 25

好吧我问题出在哪里.看起来Android 5.0上的三星可能仍然使用旧的multidex实现(在Android L Preview中使用),所以如果你的应用程序超过了64k的限制,它会在你使用强制转换的应用程序的随机位置崩溃(ExampleClass) object .

关于这个问题的更多信息可以在这里这里找到.

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

看起来我们要等到三星解决这个问题.现在我们所能做的就是通过bug报告观察邮箱上的垃圾邮件:)