Ошибка "Call требует API уровня 23", но getForeground() существует в FrameLayout из API 1
Резюме
Наконец, я нашел связанную проблему, setForeground()
неправильно помечен как требующий API 23 в ViewGroups, расширяющий FrameLayout
.
Проблема 189041: setForeground() неправильно помечен как требующий API 23 (NewApi) для ViewGroups, расширяющих FrameLayout
Если вы не расширяете FrameLayout
, документация неверна и требуется API 23.
Проблема 186273: View.setForeground неправильный уровень API
Обновленный вопрос
Отмечено как дублировано Невозможно использовать метод setForeground
в ImageView от Commonsware и ответил им:
Это ошибка документации. setForeground() существует в FrameLayout от уровня API 1; это только на представлении от API-уровня 23.
В моем случае ошибка в документации не обнаружена проверкой в вилке, но делает это в интеграционном проекте, я этого не понимаю, так или иначе, это отвечает на мой первоначальный вопрос.
Но это не тот же случай, этот код уже расширяет FrameLayout
и использует этот метод, это не ImageView
, поэтому я предполагаю, что метод был удален в API 23. Он не отображается в теперь.
Обновление: Я добавляю отчет diff для 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, а андроид-студия отображает ошибку, которую я не понимаю об API уровень, необходимый для использования метода getForeground()
класса View
в пакете android.view
:
Для вызова требуется уровень API 23 (текущий мин равен 19): android.view.View # getForeground
reference отмечает метод, добавленный в уровне API 1, и документация (Control+Q
) показывает то же самое:
![Doc, показывающий метод 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: View.setForeground неправильный уровень API