Странное ClassCastException в findViewById

Я наблюдаю странное исключение, брошенное в линию:

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.

1 ответ

Решение

Согласно JLS, ClassCastException происходит, когда вы пытаетесь привести один класс к другому, что совершенно очевидно.

Что не так очевидно, так это определение класса:

  1. классы должны быть как класса, так и интерфейса или типа массива,
  2. они должны иметь одинаковое двоичное имя,
  3. они должны быть загружены одним и тем же ClassLoader

В вашем случае несколько ClassLoader s, скорее всего, загрузит тот же класс.

Другие вопросы по тегам