findViewById中有奇怪的ClassCastException

时间:2015-04-10 09:29:30

标签: android classloader classcastexception multidex dexclassloader

我观察到一个奇怪的例外:

viewPager = (ViewPager) view.findViewById(R.id.pager);

例外情况如下:

java.lang.ClassCastException: android.support.v4.view.ViewPager cannot be cast to android.support.v4.view.ViewPager

我无法重现它,但有时会根据日志发生。

该应用程序使用官方的multidex构建与gradle。

1 个答案:

答案 0 :(得分:1)

根据JLS,当你试图将一个类强制转换为另一个类时会发生ClassCastException,这很明显。

什么是类标识的定义

  1. 类必须是类,接口或数组类型,
  2. 他们必须具有相同的二进制名称,
  3. 必须使用相同的有效ClassLoader
  4. 加载它们

    在您的情况下,多个ClassLoader很可能会加载同一个类。