usar studio linearlayout layout_below example ejemplos como addview java android android-studio framelayout android-api-levels

java - studio - viewgroup android example



"La llamada requiere el nivel de API 23" error, pero getForeground() existe en FrameLayout desde la API 1 (1)

Resumen

Finalmente, encontré el problema relacionado, setForeground() marcado incorrectamente como requerido API 23 en ViewGroups extendiendo FrameLayout .

Problema 189041: setForeground () incorrectamente marcado como requerido API 23 (NewApi) para ViewGroups extendiendo FrameLayout

Si no está extendiendo FrameLayout , la documentación es incorrecta y se requiere API 23.

Problema 186273: View.setForeground nivel de API incorrecto

Pregunta actualizada

Marcado como duplicado de No se puede usar el método setForeground en ImageView por Commonsware y respondido por él:

Eso es un error de documentación. setForeground () existía en FrameLayout desde el nivel 1 de API; está solo en Vista a partir del nivel de API 23.

En mi caso, el error de documentación no es detectado por la inspección en la bifurcación, pero lo hace en un proyecto de integración, de todos modos no lo entiendo, esto responde a mi pregunta inicial.

Pero no es el mismo caso, este código ya está extendiendo un Framelayout y utilizando este método, no es un ImageView , así que supongo que el método se ha eliminado en la API 23. Ahora no aparece en la referencia.

Actualización: agrego un informe de diferencias para FrameLayout:

Nueva pregunta

Entonces, mi pregunta cambia a cómo usar el método en versiones anteriores y, ¿por qué aparece el error de inspección selectivamente?

Si agrego una conversión redundante, el mensaje de error desaparece:

((FrameLayout) layout).getForeground()

Pero está accediendo al método de View que ahora no es compatible.

Así que supongo que apuntar a una API anterior eliminaría el mensaje de error, pero apreciaría una solución para usar este método Framelayout o una pista para solucionar el problema en mi caso:

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

Solución

En resumen, como solución alternativa, cambié el tipo a FrameLayout directamente, de modo que las advertencias sobre la API y el casting han desaparecido, y probé que funciona en el dispositivo Android 4.4.4 y la depuración, pensé que se bloquearía, de todos modos solo se usa en una Animación, y lo arreglaré / reemplazaré en el futuro.

Pregunta inicial

Bifurqué y personalicé el ejemplo de android-topeka , y android-studio muestra un error que no entiendo sobre el nivel de API requerido para usar el método getForeground() de la clase View en el paquete android.view :

La llamada requiere el nivel de API 23 (el mínimo actual es 19): android.view.View # getForeground

La reference marca el método como agregado en el nivel 1 de API, y la documentación ( Control+Q ) muestra lo mismo:

Pero la Calling new methods on older versions inspection muestra un error de que el nivel de API 23 es necesario:

Encontré una pregunta similar , un error en ese caso, pero creo que esto no es un error debido a que la bifurcación original no muestra este mensaje de error.

Trataré de detectar la primera vez que aparezca el mensaje, pero hice muchos cambios para que cualquier idea sea apreciada, gracias.