ActionBarSherlock – Le type android.support.v4.app.Fragment ne peut pas être résolu. Il est référencé indirectement à partir des fichiers .class requirejs

J’utilise ActionBarSherlock comme un projet de bibliothèque dans un projet qui est une bibliothèque elle-même. 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 qui étend 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é ce qui suit:

  • ActionBarSherlock est importé en tant que bibliothèque
  • Aucune erreur apparente dans le chemin de compilation (pas de croix rouge) et actionbarsherlock.jar est présent
  • La bibliothèque de support est dans le projet ActionBarSherlock et PAS dans d’autres projets dépendants

Rien d’autre?

J’ai eu le même problème que vous depuis que j’ai mis à jour le SDK. J’ai résolu mon problème en faisant cela (sur éclipse):

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

La réponse de Sébastien m’a conduit à la solution. Cependant, il est important de mentionner que la bibliothèque de support doit être ajoutée manuellement au chemin de génération afin de pouvoir l’examiner. 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. Cliquez avec le bouton droit sur la bibliothèque -> Build path -> Add to build path
  3. Cliquez avec le bouton droit sur le projet ABS -> Propriétés -> Java Build Path -> Ordre et export -> Vérifiez le fichier android-support-v4.jar et enregistrez
  4. Cliquez avec le bouton droit sur le projet où vous avez inclus ABS -> Propriétés -> Chemin de génération Java -> Ordre et exportation -> Vérifiez les “bibliothèques privées Android” et enregistrez
  5. Si vous avez d’autres projets dans votre hiérarchie des dépendances, effectuez l’étape 4 pour tous les projets
  6. Nettoyez tout l’espace de travail (ou tous les projets concernés) et espérez le meilleur.

Cependant, c’est un mystère pour moi de savoir pourquoi cela doit être si compliqué – comme Josh l’a mentionné, Eclipse en combinaison avec Android et les grands projets avec quelques dépendances est difficile à utiliser et j’espère que cela sera amélioré dans un futur proche.

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

Pour résoudre le problème: Cliquez avec le bouton droit sur le projet de bibliothèque => Outils Android => Ajouter une bibliothèque de support.

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

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

Voici la solution la plus simple:

Faites un clic droit sur votre dossier de projet -> Construire le chemin -> Configurer le chemin de construction -> Ajouter des fichiers Jars externes (depuis l’onglet Bibliothèques) -> sélectionnez le fichier “android-support-v4.jar”.

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

Après ce projet de nettoyage et de codage heureux …

J’ai rencontré le même problème dans mon cas, je l’ai résolu en cliquant droit sur le projet -> Chemin d’access -> Configurer le chemin de construction -> “Sélectionnez Android dans la liste de gauche” – cochez la case panneau “-> cliquez sur Appliquer -> cliquez sur OK

Ce qui a fonctionné pour moi était un peu différent des solutions proposées par @Sebastien et @FleshWound ci-dessus.

  • Copié le fichier “android-support-v4.jar” de / MyProject / libs / et écrasé celui de /ActionBarSherlock/libs/android-support-v4.jar.
  • Nous sums allés à “Propriétés du projet” -> “Chemin de la construction Java” -> “Ajouter” -> Projet ActionBarSherlock.
  • Projet propre.

J’utilisais Android Studio et je rencontrais des problèmes similaires (pour le chargement de ListFragment). J’avais initialement importé une bibliothèque:

import android.support.v4.app.ListFragment;

Et puis mis à jour build.gradle dans diectory app: Assurez-vous que la section dépendances inclut les bibliothèques de support-

  dependencies { comstack fileTree(dir: 'libs', include: ['*.jar']) comstack 'com.android.support:appcompat-v7:20.0.0 } 

Je suis nouveau sur stackoverflow. Cependant, c’est ma solution ou mon expérience ici. Je l’ai résolu par Propriétés du projet -> ‘Android’ sur le panneau de gauche -> Ajouter -> Sélectionnez la bibliothèque de support requirejse dans le menu déroulant -> ‘Appliquer’ -> OK

Cela l’a fait. Cela a fonctionné même lorsque l’option ‘Librairies privées Android’ était décochée à partir de ‘Commande et exportation’ de Java Build Path.