Сводка
Наконец, я обнаружил связанную с этим проблему: setForeground()
неправильно помечен как требующий API 23 для расширений ViewGroups FrameLayout
.
Если вы не расширяете FrameLayout
, документация неверна и требуется API 23.
Проблема 186273: View.setForeground неправильный уровень API
Обновленный вопрос
Отмечен как дублированный Commonsware "Невозможно использовать метод setForeground
в ImageView" и ответил им:
Это ошибка документации. setForeground() существовал в FrameLayout с уровня API 1; это только в представлении с уровня API 23.
В моем случае ошибка документации не обнаруживается при проверке в форке, а обнаруживается в проекте интеграции, во всяком случае, я этого не понимаю, это отвечает на мой первоначальный вопрос.
Но это не тот случай, этот код уже расширяет Framelayout
и использует этот метод, это не ImageView
, поэтому я полагаю, что этот метод был удален в API 23. Теперь он не отображается в справочнике.
Обновление: добавлен отчет о различиях для Макет кадра:
Новый вопрос
Итак, мой вопрос меняется на то, как использовать метод в предыдущих версиях, и почему ошибка проверки появляется выборочно?
Если я добавлю избыточное приведение, сообщение об ошибке исчезнет:
((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:
Я нашел похожий вопрос, ошибку в этом случае, но я думаю, что это не ошибка, потому что исходная вилка не показывает это сообщение об ошибке.
Я попытаюсь обнаружить первое появление сообщения, но я сделал много изменений, поэтому любая подсказка будет оценена, спасибо.