web-dev-qa-db-fra.com

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

J'utilise ActionBarSherlock comme 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 é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é en tant que bibliothèque
  • Aucune erreur apparente dans le chemin de génération (pas de croix rouge) et actionbarsherlock.jar est présent
  • La bibliothèque de support se trouve dans le projet ActionBarSherlock et NON dans d'autres projets dépendants

Rien d'autre?

45
znat

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 Eclipse):

  • Faites un clic droit sur la bibliothèque de sherlock de la barre d'actions => Properties => Java Build Path => Order and Export tab => cocher Android support v4 ou Android Private Libraries et sélectionnez Ok
  • Cliquez avec le bouton droit sur votre projet personnel et accédez aux propriétés => Java build path => check Android Private Libraries
  • Nettoyez les deux projets, cela devrait fonctionner.
67

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 génération afin de pouvoir vérifier son 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. Faites un clic droit sur la bibliothèque -> Chemin de construction -> Ajouter au chemin de construction
  3. Cliquez avec le bouton droit sur le projet ABS -> Propriétés -> Java Build Path -> Order and Export -> Check the Android-support-v4.jar file and save
  4. Faites un clic droit sur le projet dans lequel vous avez inclus ABS -> Propriétés -> Java Build Path -> Order and Export -> Check the "Android Private Libraries" and save
  5. Si vous avez des projets supplémentaires dans votre hiérarchie de dépendances, effectuez l'étape 4 pour tous ces 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 pourquoi cela doit être si compliqué - comme Josh l'a mentionné, Eclipse en combinaison avec Android et les grands projets avec quelques dépendances sont difficiles à utiliser et j'espère que cela sera améliorée dans un avenir proche.

11
endowzoner

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

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

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

10
Carlos

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

8
SpeedEX505

Voici la solution la plus simple:

Cliquez avec le bouton droit sur votre dossier de projet -> Chemin de génération -> Configurer le chemin de génération -> Ajouter des fichiers externes (à partir de l'onglet bibliothèques) -> sélectionnez le fichier "Android-support-v4.jar".

(Il sera situé dans Android ici est le chemin générique "Android-sdk\extras\Android\support\v4").

Après ce nettoyage, vous projetez et joyeux codage ...

4
Ahsanwarsi

J'ai rencontré le même problème dans mon cas, je l'ai résolu en cliquant avec le bouton droit sur le projet -> Chemin Buid -> Configurer le chemin de génération -> "sélectionnez Android dans la liste de gauche" -> "sélectionnez le case à cocher pour construire la cible du projet dans le panneau de droite "-> cliquez sur Appliquer -> cliquez sur OK

1
Alok D

J'utilisais Android Studio et face à un problème similaire (pour le chargement de ListFragment). J'avais initialement importé la bibliothèque:

import Android.support.v4.app.ListFragment;

Et puis mis à jour build.gradle dans le répertoire de l'application: assurez-vous que la section des dépendances inclut les bibliothèques de support -

  dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.Android.support:appcompat-v7:20.0.0 }
0
Dhwaneel

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

Cela l'a fait. Cela a fonctionné même lorsque "Android Private Libraries" n'était pas coché dans "Order and Export" de Java Build Path.

0
Achal Kagwad

Ce qui a fonctionné pour moi était un peu différent des solutions de @Sebastien et @FleshWound ci-dessus dans le fil.

  • Copié le fichier "Android-support-v4.jar" depuis/MyProject/libs/et remplacé celui-ci dans /ActionBarSherlock/libs/Android-support-v4.jar.
  • Je suis allé dans "Propriétés du projet" -> "Chemin de génération Java" -> "Ajouter" -> Projet ActionBarSherlock.
  • Projet propre.
0
Himadri Pant