La llamada requiere el nivel 23 de API: error getForeground (), pero es un método FrameLayout ya que API 1
Resumen
Finalmente encontré el problema relacionado, setForeground()
incorrectamente marcado como requerir API 23 en ViewGroups extendiendo FrameLayout
.
- ¿Cómo dejar pasar el evento a container en android?
- Agregar vistas de los niños a un FrameLayout por programación, a continuación, cambiar sus posiciones
- ¿Cómo puedo alinear un elemento a la derecha en FrameLayout?
- ClassCastException android.widget.FrameLayout $ LayoutParams a android.support.v4.widget.DrawerLayout $ LayoutParams
- El botón siempre aparece en la parte superior de FrameLayout
Problema 189041: setForeground () incorrectamente marcado como requerir API 23 (NewApi) para ViewGroups extender FrameLayout
Si no está extendiendo FrameLayout
, la documentación es incorrecta y la API 23 es realmente necesaria.
Problema 186273: View.setForeground Nivel de API incorrecto
Pregunta actualizada
Marcado como duplicado de No se puede usar el método setForeground en ImageView by Commonsware y respondió por él:
Eso es un error de documentación. SetForeground () existe en FrameLayout desde el nivel 1 de la API; Es sólo en Ver como de API Nivel 23.
En mi caso el error de la documentación no es detectado por la inspección en el tenedor pero lo hace en un proyecto de integración, no lo entiendo, de todos modos, esto responde a mi pregunta inicial.
Pero no es el mismo caso, este código ya está extendiendo un Framelayout
y usando este método, no es un ImageView
, por lo que supongo que el método fue eliminado en la API 23. No aparece en la referencia ahora, ¿Es esto cierto? Una degradación funcional en este caso?
Actualización: agrego un informe diff para FrameLayout que confirme esto:
Nueva pregunta
Así que mi pregunta cambia a cómo usar el método en versiones anteriores, y, ¿por qué aparece el error de inspección de forma selectiva?
Si agrego un yeso redundante, el mensaje de error desaparece:
((FrameLayout) layout).getForeground()
Pero realmente está accediendo al método View
que no es compatible ahora.
Así que supongo que la orientación de una API anterior quitaría el mensaje de error, pero me gustaría una solución para utilizar 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
Trabajar alrededor
En resumen, como una solución, cambié el tipo de FrameLayout
directamente para que las advertencias sobre la API y el casting se han ido y probé que funciona en Android 4.4.4 dispositivo y la depuración, pensé que se bloquearía, de todos modos sólo se utiliza en una animación y Lo solucionaré / lo reemplazaré en el futuro.
Pregunta inicial
Yo bifurcaba y personalizaba la muestra google android-topeka y android-studio muestra un error que no entiendo sobre el nivel de API necesario para usar el método getForeground()
de la clase View
en el paquete android.view
:
La llamada requiere el nivel 23 de API (el min actual es 19): android.view.View # getForeground
La referencia marca el método como agregado en el nivel 1 de API y la documentación ( Control+Q
) muestra lo mismo:
Sin embargo, el Calling new methods on older versions inspection
muestra un error que requiere el nivel 23 de la API:
El proyecto agrega la siguiente implementación de Property
para permitir beneficios de rendimiento cuando se establece el primer plano:
He encontrado una pregunta similar , un error en ese caso, pero creo que esto no es un error debido a la horquilla original no muestra este mensaje de error.
Voy a tratar de detectar la primera vez que aparece el mensaje, pero hice un montón de cambios por lo que cualquier pista sería apreciada, gracias.
- Superponer imagen sobre otro android
- Dos diseños de marco en el ejemplo de FragmentTabs de Android Support4Demos
- Colocar la vista dentro de FrameLayout en Android
- Agregar y eliminar un TextView dinámicamente en Android
- La altura de la vista de niño de Android no coincide con el padre en el elemento de ListView
- Clase emitida excepción en FrameLayout cuando estoy tratando de cambiar el orden de las vistas en el diseño xml?
- Obtener Fragmento dinámicamente adjunto a <FrameLayout>?
- problemas con Android FrameLayout cuando override onDraw
Finalmente encontré el problema relacionado, setForeground()
incorrectamente marcado como requerir API 23 para ViewGroups extendiendo FrameLayout
.
Problema 189041: setForeground () incorrectamente marcado como requerir API 23 (NewApi) para ViewGroups extender FrameLayout
Si no está extendiendo FrameLayout
, la documentación es incorrecta y la API 23 es realmente necesaria.
Problema 186273: View.setForeground Nivel de API incorrecto
- ¿Cómo cambiar el tamaño del búfer logcat en Android?
- ¿Qué significa: Debe establecer explícitamente 'android: fullBackupContent' para evitar la copia de seguridad del regId específico del dispositivo GCM?