Ошибка "Требуется уровень API 23", но функция getForeground() существует для FrameLayout из API 1
Резюме
Наконец, я нашел связанную проблему, setForeground()
неправильно помечен как требующий API 23 для расширения 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
) показывает то же самое:
Но Calling new methods on older versions inspection
показывает ошибку, что API уровень 23 требуется:
Я нашел похожий вопрос, в этом случае ошибка, но я думаю, что это не ошибка, потому что оригинальный форк не показывает это сообщение об ошибке.
Я постараюсь определить, когда сообщение появляется впервые, но я внес много изменений, поэтому любая подсказка будет признательна, спасибо.
1 ответ
Наконец я нашел связанную проблему, setForeground()
неправильно помечен как требующий API 23 для расширения ViewGroups FrameLayout
,
Если вы не расширяете FrameLayout
документация неверна и API 23 действительно требуется.