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
.
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.
Finalmente encontré el problema relacionado, setForeground()
marcado incorrectamente como que requiere API 23 para ViewGroups extendiendo FrameLayout
.
Si no está extendiendo FrameLayout
, la documentación es incorrecta y la API 23 es realmente necesaria.