4

我观察到在线抛出一个奇怪的异常:

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

异常如下所示:

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

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

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

4

1 回答 1

1

根据 JLS,ClassCastException当您尝试将一个类转换为另一个类时会发生这种情况,这很明显。

不太明显的是Class identity 的定义是什么:

  1. 这些类必须是类、接口或数组类型,
  2. 它们必须具有相同的二进制名称,
  3. 它们必须由相同的有效加载ClassLoader

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

于 2015-04-10T15:01:44.680 回答