Подтвердить что ты не робот

Ошибка "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 требуется

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

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

4b9b3361

Ответ 1

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

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

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

Проблема 186273: View.setForeground неправильный уровень API