it-swarm.com.de

ActionBarSherlock - Der Typ Android.support.v4.app.Fragment kann nicht aufgelöst werden. Es wird indirekt von erforderlichen .class-Dateien verwiesen

Ich verwende ActionBarSherlock als Bibliotheksprojekt in einem Projekt, das selbst eine Bibliothek ist. Es hat alles einwandfrei funktioniert, bis ich das Projekt auf einen neuen Computer verschoben und die SDK-Tools aktualisiert habe.

Ich habe diesen Fehler, den ich nicht verstehe. Wenn ich eine Klasse erstelle, die SherlockFragment wie folgt erweitert:

import com.actionbarsherlock.app.SherlockFragment;

public class SomeFragment extends SherlockFragment {
    ... 
}

Ich habe folgenden Kompilierungsfehler:

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

Ich habe folgendes überprüft:

  • ActionBarSherlock wird als Bibliothek importiert
  • Es sind keine offensichtlichen Fehler im Erstellungspfad (kein rotes Kreuz) und in actionbarsherlock.jar vorhanden
  • Die Unterstützungsbibliothek befindet sich im ActionBarSherlock-Projekt und NICHT in anderen abhängigen Projekten

Noch etwas?

45
znat

Ich hatte das gleiche Problem wie Sie, seit ich das SDK aktualisiert hatte. Ich habe mein Problem dadurch gelöst (auf Eclipse):

  • Klicken Sie mit der rechten Maustaste auf die Sherlock-Bibliothek in der Aktionsleiste. => Properties => Java Build Path => Order and Export tab => check Android support v4 oder Android Private Libraries und wählen Sie OK
  • Rechtsklicke auf dein persönliches Projekt und gehe zu Eigenschaften => Java build path => check Android Private Libraries
  • Bereinigen Sie beide Projekte, es sollte funktionieren.
67

Sebastiens Antwort führte mich tatsächlich zur Lösung. Es ist jedoch wichtig zu erwähnen, dass die Unterstützungsbibliothek manuell zum Erstellungspfad hinzugefügt werden muss, um sie für den Export überprüfen zu können. Zum späteren Nachschlagen sind hier die Schritte, die das Problem für mich gelöst haben:

  1. Stellen Sie sicher, dass sich die Unterstützungsbibliothek im libs-Ordner des ABS-Projekts und an keiner anderen Stelle befindet
  2. Klicken Sie mit der rechten Maustaste auf die Bibliothek -> Pfad erstellen -> Zum Erstellungspfad hinzufügen
  3. Klicken Sie mit der rechten Maustaste auf ABS-Projekt -> Eigenschaften -> Java= Build Path -> Order and Export -> Überprüfen Sie die Datei Android-support-v4.jar und speichern Sie sie
  4. Klicken Sie mit der rechten Maustaste auf das Projekt, in das Sie ABS eingefügt haben -> Eigenschaften -> Java Build Path -> Order and Export -> Überprüfen Sie die "Android Private Libraries" und speichern Sie
  5. Wenn Ihre Abhängigkeitshierarchie weitere Projekte enthält, führen Sie für alle diese Projekte Schritt 4 aus
  6. Bereinigen Sie den gesamten Arbeitsbereich (oder alle betroffenen Projekte) und hoffen Sie auf das Beste.

Es ist jedoch ein Rätsel für mich, warum dies so kompliziert sein muss - wie Josh bereits erwähnte, ist Eclipse in Kombination mit Android und großen Projekten mit einigen Abhängigkeiten schwer zu verwenden, und ich hoffe, dass dies so ist wird in naher Zukunft verbessert.

11
endowzoner

In meinem Fall verwende ich 2 Android Bibliotheken, die die Android Unterstützungsbibliothek erfordern. Das Problem war, dass beide Bibliotheken unterschiedliche Versionen der Android Support-Bibliothek.

m das Problem zu beheben: Klicken Sie mit der rechten Maustaste auf das Bibliotheksprojekt => Android Tools => Support-Bibliothek hinzufügen.

Wiederholen Sie diese Aktion für jede Bibliothek.

10
Carlos

Ich hatte das gleiche problem Es gab 2 verschiedene Bibliotheken. Löschen Sie die Support-Bibliothek aus Ihrem Hauptprojekt

8
SpeedEX505

Hier ist die einfachste Lösung:

Klicken Sie mit der rechten Maustaste auf Ihren Projektordner -> Erstellungspfad -> Erstellungspfad konfigurieren -> Externe Jars hinzufügen (Registerkarte Aus Bibliotheken) -> wählen Sie die Datei "Android-support-v4.jar".

(Es befindet sich in Android SDK-Ordner hier ist generischer Pfad "Android-sdk\extras\Android\support\v4").

Nach diesem sauberen Projekt und glücklich Codierung ...

4
Ahsanwarsi

Ich hatte das gleiche Problem in meinem Fall. Ich habe es gelöst, indem ich mit der rechten Maustaste auf das Projekt geklickt habe -> Buid path -> Configure Build path -> "select Android from left hand list" -> "select the Kontrollkästchen für das Erstellungsprojektziel im rechten Bereich "-> Klicken Sie auf" Übernehmen "-> Klicken Sie auf" OK "

1
Alok D

Ich habe Android Studio verwendet und hatte ein ähnliches Problem (zum Laden von ListFragment). Ich hatte ursprünglich folgende Bibliothek importiert:

android.support.v4.app.ListFragment importieren;

Und dann build.gradle in der App-Kategorie aktualisiert: Stellen Sie sicher, dass der Abschnitt Abhängigkeiten Unterstützungsbibliotheken enthält.

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

Ich bin neu im Stackoverflow. Dies ist jedoch meine Lösung oder Erfahrung hier. Ich habe dies durch Projekteigenschaften -> "Android" im linken Bereich -> Hinzufügen -> Wählen Sie die gewünschte Support-Bibliothek aus dem Dropdown-Menü -> "Übernehmen" -> OK

Das hat es geschafft. Dies funktionierte auch dann, wenn 'Android Private Libraries' in 'Order and Export' von Java Build Path deaktiviert war.

0
Achal Kagwad

Was bei mir funktioniert hat, war etwas anders als die Lösungen von @Sebastien und @FleshWound oben im Thread.

  • Kopierte die Datei "Android-support-v4.jar" aus/MyProject/libs/und überschrieb die Datei unter /ActionBarSherlock/libs/Android-support-v4.jar.
  • Ging zu "Projekteigenschaften" -> "Java-Erstellungspfad" -> "Hinzufügen" -> ActionBarSherlock-Projekt.
  • Projekt bereinigen.
0
Himadri Pant