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

あなたの場合、複数ClassLoaderの が同じクラスをロードする可能性が最も高くなります。

于 2015-04-10T15:01:44.680 に答える