Résumé
Enfin, j'ai trouvé le problème connexe, setForeground()
incorrectement signalé comme nécessitant l'API 23 sur ViewGroups étendant FrameLayout
.
Si vous n'étendez pas FrameLayout
, la documentation est incorrecte et l'API 23 est requise.
problème 186273: niveau API incorrect pour View.setForeground
Question mise à jour
Marqué comme dupliqué de la méthode Can't use setForeground
sur ImageView par Commonsware et répondu par lui:
C'est un bug de documentation. setForeground () existait sur FrameLayout à partir de l'API niveau 1; il n'est disponible que sur View à partir de l'API niveau 23.
Dans mon cas, le bug de documentation n'est pas détecté par l'inspection dans le fork mais le fait dans un projet d'intégration, je ne le comprends pas, de toute façon, cela répond à ma question initiale.
Mais ce n'est pas le même cas, ce code étend déjà un Framelayout
et en utilisant cette méthode, ce n'est pas un ImageView
, donc je suppose que la méthode a été supprimée dans l'API 23. Elle ne le fait pas apparaissent dans la référence maintenant.
Mise à jour: J'ajoute un rapport diff pour FrameLayout:
Nouvelle question
Ma question change donc sur la façon d'utiliser la méthode dans les versions précédentes et pourquoi apparaît l'erreur d'inspection de manière sélective?
Si j'ajoute une distribution redondante, le message d'erreur disparaît:
((FrameLayout) layout).getForeground()
Mais c'est l'accès à la méthode View
qui n'est pas prise en charge actuellement.
Je suppose donc que le ciblage d'une API précédente supprimerait le message d'erreur, mais j'apprécierais une solution pour utiliser cette méthode Framelayout ou un indice pour résoudre le problème dans mon cas:
Android_COMPILE_SDK_VERSION=23
Android_BUILD_TOOLS_VERSION=23.0.1
Android_DEFAULT_MIN_SDK_VERSION=19
Android_DEFAULT_TARGET_SDK_VERSION=23
Solution
En bref, comme solution de contournement, j'ai changé le type en FrameLayout
directement, donc les avertissements concernant l'API et le casting ont disparu, et j'ai testé que cela fonctionne sur Android 4.4.4 appareil et le débogage, je pensais que ça planterait, de toute façon il n'est utilisé que dans une animation, et je le corrigerai/le remplacerai à l'avenir.
Question initiale
J'ai bifurqué et personnalisé l'exemple Google Android-topeka , et Android-studio affiche une erreur que je ne comprends pas sur le niveau d'API requis pour utiliser la méthode getForeground()
de la classe View
dans le package Android.view
:
L'appel nécessite le niveau API 23 (la valeur minimale actuelle est de 19): Android.view.View # getForeground
référence marque la méthode comme ajoutée au niveau 1 de l'API, et la documentation (Control+Q
) Montre la même chose:
Mais le Calling new methods on older versions inspection
Affiche une erreur indiquant que le niveau d'API 23 est requis:
J'ai trouvé un question similaire , un bug dans ce cas, mais je pense que ce n'est pas un bug car la fourche d'origine n'affiche pas ce message d'erreur.
Je vais essayer de détecter la première fois que le message apparaît, mais j'ai fait beaucoup de changements afin que tout indice soit apprécié, merci.
Enfin, j'ai trouvé le problème connexe, setForeground()
incorrectement signalé comme nécessitant l'API 23 pour ViewGroups étendant FrameLayout
.
Si vous n'étendez pas FrameLayout
, la documentation est incorrecte et l'API 23 est vraiment requise.
Problème 186273: niveau API incorrect pour View.setForeground