Ошибка "Требуется уровень API 23", но функция getForeground() существует для FrameLayout из API 1

Резюме

Наконец, я нашел связанную проблему, setForeground() неправильно помечен как требующий API 23 для расширения ViewGroups FrameLayout,

Проблема 189041: setForeground() неправильно помечен как требующий API 23 (NewApi) для ViewGroups, расширяющих FrameLayout

Если вы не расширяете FrameLayout документация неверна и API 23 требуется.

Ошибка 186273: неверный уровень API в View.setForeground

Обновленный вопрос

Помечен как дублированный Не могу использовать setForeground метод на ImageView от Commonsware и ответил им:

Это ошибка документации. setForeground() существовал в FrameLayout из уровня API 1; только на уровне API 23 уровня.

В моем случае ошибка с документацией не обнаруживается при проверке в форке, но делает это в интеграционном проекте, во всяком случае, я не понимаю, это отвечает на мой первоначальный вопрос.

Но это не тот случай, этот код уже расширяет Framelayout и используя этот метод, это не ImageView, так что я полагаю, что метод был удален в API 23. Сейчас он не отображается в ссылке.

Обновление: я добавляю отчет о различиях для FrameLayout:

введите описание изображения здесь

Новый вопрос

Поэтому мой вопрос меняется на то, как использовать метод в предыдущих версиях, и почему выборочно появляется ошибка проверки?

Если я добавлю избыточное приведение, сообщение об ошибке исчезнет:

((FrameLayout) layout).getForeground()

Но это доступ к View метод, который не поддерживается сейчас.

Поэтому я полагаю, что нацеливание на предыдущий API удалит сообщение об ошибке, но я был бы признателен за решение использовать этот метод Framelayout или подсказку для решения проблемы в моем случае:

ANDROID_COMPILE_SDK_VERSION=23
ANDROID_BUILD_TOOLS_VERSION=23.0.1
ANDROID_DEFAULT_MIN_SDK_VERSION=19
ANDROID_DEFAULT_TARGET_SDK_VERSION=23

Временное решение

Короче говоря, в качестве обходного пути я изменил тип на FrameLayout напрямую, поэтому предупреждения об API и приведениях пропали, и я проверил, что он работает на устройстве Android 4.4.4 и отладке, думал, что он вылетит, в любом случае, он будет использоваться только в одной анимации, и я исправлю / заменим его в будущем.

Начальный вопрос

Я разобрал и настроил пример Google android-topeka, и android-studio выдает ошибку, которую я не понимаю об уровне API, необходимом для использования метода getForeground() класса View в android.view пакет:

Для вызова требуется уровень API 23 (текущий минимум 19): android.view.View#getForeground

Ссылка помечает метод как добавленный на уровне API 1 и документацию (Control+Q) показывает то же самое:

Документ, показывающий метод API уровня 1

Но Calling new methods on older versions inspection показывает ошибку, что API уровень 23 требуется:

Требуется сообщение об ошибке API 23

Я нашел похожий вопрос, в этом случае ошибка, но я думаю, что это не ошибка, потому что оригинальный форк не показывает это сообщение об ошибке.

Я постараюсь определить, когда сообщение появляется впервые, но я внес много изменений, поэтому любая подсказка будет признательна, спасибо.

1 ответ

Решение

Наконец я нашел связанную проблему, setForeground() неправильно помечен как требующий API 23 для расширения ViewGroups FrameLayout,

Проблема 189041: setForeground() неправильно помечен как требующий API 23 (NewApi) для ViewGroups, расширяющих FrameLayout

Если вы не расширяете FrameLayoutдокументация неверна и API 23 действительно требуется.

Ошибка 186273: неверный уровень API в View.setForeground

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