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 .

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:

Introduzca aquí la descripción de la imagen

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:

Doc que muestra el método API de nivel 1

Sin embargo, el Calling new methods on older versions inspection muestra un error que requiere el nivel 23 de la API:

Se requiere un mensaje de error sobre la API 23

El proyecto agrega la siguiente implementación de Property para permitir beneficios de rendimiento cuando se establece el primer plano:

Código relacionado sobre IntProperty

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.

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

  • Android: cuando / por qué debo usar FrameLayout en lugar de Fragment?
  • Panel corredero deslizante - panel deslizante de línea fina bajo google mapfragment
  • ClassCastException LinearLayout LayoutParams
  • Layout_marginLeft funciona correctamente en Android API <11 cuando View in FrameLayout
  • Cómo obtener clics en dos botón solapado en la misma disposición de marco en android
  • Android: Borde personalizado para FrameLayout
  • Android: Establecer márgenes en un FrameLayout mediante programación, no funciona
  • Convierta el diseño del marco en imagen y guárdelo
  • Android - La altura de la estructura del marco no coincide con el diseño del coordinador
  • Agregar una vista de texto a un FrameLayout en una posición determinada
  • Android: Relativelayout en Framelayout no aparece (Pantalla de vista previa de cámara personalizada)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.