Impossible d'exécuter l'exemple ActionBarCompat
-
12-12-2019 - |
Question
J'ai du mal à compiler et à exécuter l'exemple ActionBarCompat d'Android 16.J'ai sélectionné le niveau d'API 16 comme cible de construction, ce qui semble fonctionner correctement, mais lorsque j'essaie de déboguer, ces erreurs apparaissent.Bien sûr, je pourrais modifier le niveau minimum de l'API dans le manifeste, mais à quoi cela servirait-il ?Je n'ai apporté aucune modification à l'échantillon, alors comment se fait-il qu'il ne fonctionne pas correctement ?
Class requires API level 14 (current min is 3): android.view.ActionProvider SimpleMenuItem.java /ActionBarCompat/src/com/example/android/actionbarcompat line 129 Android Lint Problem
Class requires API level 14 (current min is 3): android.view.ActionProvider SimpleMenuItem.java /ActionBarCompat/src/com/example/android/actionbarcompat line 134 Android Lint Problem
Class requires API level 14 (current min is 3): android.view.MenuItem.OnActionExpandListener SimpleMenuItem.java /ActionBarCompat/src/com/example/android/actionbarcompat line 155 Android Lint Problem
Je suis complètement confus, toute aide serait appréciée.
MISE À JOUR:J'ai ajouté les annotations @TargetApi(14), puis j'ai ajouté Lint suppres newApi à l'une des méthodes et maintenant, cela semble fonctionner correctement.Je suis encore plus confus.Quelqu'un pourrait-il faire la lumière sur ce qui se passe ?
La solution
Malheureusement, ces exemples ne sont pas tenus à jour pour chaque itération du SDK.
-Tout d'abord, vous avez défini un min de sdkversion = 3
?Cela me semble un peu faible.7 (éclair) est, je pense, la version minimale sur laquelle la plupart des projets devraient se concentrer.Les versions de niveau inférieur ont une part de marché ridicule et elle continuera de diminuer.
-Ce sont des avertissements relatifs aux peluches.Lint est un peu nouveau sur Android, c'est pourquoi cet exemple n'en tient pas compte.Il vous informe des problèmes potentiels dans votre code.Cet avertissement signifie que vous appelez une classe de niveau 14 dans un code pouvant s'exécuter sur un terminal de niveau 3.Vous devriez essayer de les supprimer avec un @TargetApi(14)
annotation.Cette annotation indique à Lint que vous savez ce que vous faites et que ce code ne s'exécutera que pour la version SDK = 14 au minimum.
-De plus, si vous souhaitez utiliser la barre d'action avec n'importe quelle version d'Android, ce que vous souhaitez vraiment utiliser est la bibliothèque open source ActionBar Sherlock.Mais une étape à la fois :-)
Autres conseils
Dans votre manifeste, vous définissez android:minSdkVersion="3"
, pourtant vous effectuez des appels vers des classes/méthodes API de niveau 14.
Lint vérifiera ces types d'appels API et vous avertira.
Évidemment dans le ActionBarCompat
le niveau actuel de l'API est vérifié pour garantir que l'appel peut être effectué en toute sécurité.
Pour supprimer l'avertissement, ajoutez simplement @TargetApi(14)
avant la méthode où vous effectuez l'appel.
Vous devez modifier la cible de projet de projet au niveau API 14..in (Project-> Propriétés-> Android)
Ce sont leurs exigences:
En raison de l'utilisation de la barre d'action native et de ses classes apparentées sur Sandwich à la crème glacée, la bibliothèque nécessite que it et votre projet est compilé avecAndroid 4.0 ou plus récent .Le projet exige également que vous compiliez avec JDK 1.6 dans votre éditeur et tous les systèmes de construction que vous pouvez utiliser.