45 votes

ActionBarSherlock - Le type Android.support.v4.app.Fragment ne peut être résolu. Il est référencé indirectement dans les fichiers .class requis.

J'utilise ActionBarSherlock comme projet de bibliothèque dans un projet qui est lui-même une bibliothèque. Tout fonctionnait bien jusqu'à ce que je déplace le projet sur un nouvel ordinateur et que je mette à jour les outils du SDK.

J'ai cette erreur que je ne comprends pas. Lorsque je crée une classe étendant SherlockFragment comme ceci :

import com.actionbarsherlock.app.SherlockFragment;

public class SomeFragment extends SherlockFragment {
    ... 
}

J'ai l'erreur de compilation suivante :

The type android.support.v4.app.Fragment cannot be resolved. It is indirectly referenced from required .class files

J'ai vérifié les points suivants :

  • ActionBarSherlock est importé comme une bibliothèque
  • Aucune erreur apparente dans le chemin de construction (pas de croix rouge) et actionbarsherlock.jar est présent.
  • La bibliothèque de support se trouve dans le projet ActionBarSherlock et NON dans les autres projets dépendants.

Autre chose ?

67voto

Sebastien Points 1293

J'avais le même problème que vous depuis que j'avais mis à jour le SDK. J'ai résolu mon problème en faisant ceci (sur eclipse) :

  • Cliquez avec le bouton droit de la souris sur la barre d'action sherlock library =>. Properties => Java Build Path => Order and Export onglet => contrôle android support v4 o Android Private Libraries et sélectionnez Ok
  • Cliquez avec le bouton droit de la souris sur votre projet personnel et allez dans propriétés => java build path =>. check Android Private Libraries
  • Nettoyer les deux projets, ça devrait marcher.

11voto

FleshWound Points 336

La réponse de Sébastien m'a en fait conduit à la solution. Cependant, il est important de mentionner que la bibliothèque de support doit être ajoutée manuellement au chemin de construction afin de pouvoir la vérifier pour l'exportation. Pour référence future, voici les étapes qui ont résolu le problème pour moi :

  1. Assurez-vous que la bibliothèque de support se trouve dans le dossier libs du projet ABS et nulle part ailleurs.
  2. Clic droit sur la bibliothèque --> Chemin de construction --> Ajouter au chemin de construction
  3. Cliquez avec le bouton droit de la souris sur le projet ABS --> Propriétés --> Chemin de construction de Java --> Commander et exporter --> Vérifier le fichier Android-support-v4.jar et enregistrer
  4. Cliquez avec le bouton droit de la souris sur le projet dans lequel vous avez inclus ABS --> Propriétés --> Java Build Path --> Commander et exporter --> Cochez "Android Private Libraries" et sauvegardez.
  5. Si vous avez des projets supplémentaires dans votre hiérarchie de dépendance, effectuez l'étape 4 pour tous ces projets.
  6. Nettoyez l'ensemble de l'espace de travail (ou tous les projets concernés) et espérez le meilleur.

Cependant, je ne comprends pas pourquoi cela doit être si compliqué. Comme Josh l'a mentionné, Eclipse, combiné à Android et à de grands projets avec quelques dépendances, est difficile à utiliser et j'espère que cela sera amélioré dans un avenir proche.

10voto

Carlos Points 236

Dans mon cas, j'utilise deux bibliothèques Android qui nécessitent la bibliothèque de support Android. Le problème est que les deux bibliothèques ont des versions différentes de la bibliothèque de support Android.

Pour résoudre ce problème : Cliquez avec le bouton droit de la souris sur le projet de la bibliothèque => Android Tools => Add Support Library.

Répétez cette action pour chaque bibliothèque.

8voto

SpeedEX505 Points 417

J'ai eu le même problème. Il y avait 2 bibliothèques différentes. Supprimez la bibliothèque de support de votre projet principal

4voto

Ahsanwarsi Points 11

Voici la solution la plus simple :

Cliquez avec le bouton droit de la souris sur le dossier de votre projet -> Chemin de construction -> Configurer le chemin de construction -> Add External Jars(From libraries tab) -> sélectionnez le fichier "Android-support-v4.jar".

(Il sera situé dans le dossier Android SDK : voici le chemin générique "Android-sdk \extras\android\support\v4 ").

Après cela, nettoyez votre projet et bon codage...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X