web-dev-qa-db-fra.com

ActionBarSherlock génère des tonnes d'erreurs "Appel nécessite une API de niveau 11 (la min actuelle est 7)"

J'ai téléchargé ActionBarSherlock 4.0.3, décompressé le fichier et créé un nouveau projet à partir du dossier library. Selon Eclipse, le dossier src était rempli d'erreurs. J'ai donc suivi diverses instructions en ligne, telles que l'ajout de Android-support-v4.jar, la définition de l'API cible à 15 et le niveau de conformité du compilateur à 1.6. Reste que le projet contient 194 erreurs, dont les suivantes: "L'appel nécessite un niveau 11 de l'API (la valeur minimale est 7)". Alors quand je regarde l'une des erreurs, je vois ceci:

@Override
public void invalidateOptionsMenu() {
    getSherlock().dispatchInvalidateOptionsMenu();
}

public void supportInvalidateOptionsMenu() {
    invalidateOptionsMenu();
    //the previous line has this error in Eclipse:
    //Call requires API level 11 (current min is 7): Android.app.Activity#invalidateOptionsMenu
}

Cela me semble étrange, car invalidateOptionsMenu() est remplacé par la fonction précédente, mais Eclipse se plaint toujours de la fonction nécessitant un niveau d'API plus récent. Lorsque je regarde les autres erreurs, je constate que c'est également le cas de nombreuses autres erreurs.

J’ai beaucoup plus d’expérience avec Python que Java, je ne comprends donc rien à la cause de cela. De l'aide serait appréciée, et si vous aidez, pourriez-vous également expliquer les causes de ce problème et ce que vous avez fait pour le résoudre? Je ne voudrais pas demander à quelqu'un chaque fois que j'ai un problème, je veux aussi apprendre.

18
vurp0

Puisque vous utilisez l'API minimale de niveau 7 et que invalidateOptionsMenu () n'existait pas jusqu'au niveau 11, vous ne pouvez pas l'ignorer sans erreur, car si le périphérique exécute l'API de niveau 7, la fonction n'est pas activée. même disponible dans la classe de base et une fonction non existante ne peuvent pas être remplacés.

7
Joachim Isaksson

Il m'est arrivé après avoir lancé les tests Lint. Essayez un clic droit sur le projet de barre d’action sherlock -> Outils Android -> Effacer les marqueurs de peluche.

37
Martin Nuc

Utilisez ActivityCompat , fourni dans le fichier de support.

20
dbrown0708

Toutes ces réponses sont fausses sauf dbrown0708 mais je vais le déclarer plus 

Vous pouvez utiliser invalidateOptionMenu dans une API inférieure en utilisant ActivityCompat Tel que fourni dans la bibliothèque de support technique v4

La syntaxe est invalidateOptionsMenu(Activity activity);

le code est 

ActivityCompat.invalidateOptionsMenu(this);

Dans API Depuis le niveau 11 

invalidateOptionsMenu();
1
Mina Fawzy

Essayez d’utiliser le import Android.support.v4.app.Fragment; comme bibliothèque

0
Chris