ActionBarSherlock funktioniert nicht

  • Hallo zusammen!
    Ich habe mal wieder eine Frage: ich will den AppSherlock für meine App nutzen, aber so recht will es nicht funktionieren!
    Ich habe nach diesem Tutorial hier gearbeitet, was erst auch recht leicht klang.
    Das bestehende Projekt arbeitet mit min. SDK 8 und max. SDK 17.
    Ich habe folgendes gemacht:
    - ActionBarSherlock heruntergeladen,


    - in den Workspace Ordner kopiert (nicht in ein Projekt),


    - Importiert,


    - Rechtsklick im Package Explorer und anschließend properties ausgewählt. Hier sollte ich eigentlich auf den Reiter "Android" klicken und danach einen Haken bei "Is libary" setzen. Das gab es bei mir aber nicht, ich habe nur "Resource", Task Tags" und "XML Syntax" gefunden. Also habe ich oben "projects", "properties" ausgewählt und es dort auch gefunden.
    - Ich sollte auf meinem Projekt einen Rechtsklick machen und wieder properties anwählen um dann unten eine Referenz einzustellen. Auch das klappte leider nicht! Wenn ich auf "add" gehe wird mir lediglich ein leeres Fenster angezeigt.


    Dann habe ich einige Sachen im Source Code verändert, nämlich:

    Java
    public class MainActivity extends SherlockActivity


    und in der Manifest Datei habe ich

    Java
    android:theme="@style/Theme.Sherlock.Light"

    hinzugefügt. Hier zeigt Eclipse mir an: "No ressource found that matches the given name(at `theme` with value @style/Theme.Sherlock.Light)"


    Jetzt werden mir sehr viele Fehler angezeigt, die vorher nicht da waren. Zum Beispiel in der Manifest Datei das @style/Theme.Sherlock.Light oder in der MainActivity der Name "SherlockActivity" und vieles mehr.


    Weiß jemand Rat? Vielen Dank schon einmal!


    EDIT:
    Ich habe einen kleinen Fehler gefunden, ich sollte keinen Haken bei Copy "Copy projects in workspace" setzen. Ich habe jetzt im Package Explorer den Ordner libary gelöscht und wollte ihn jetzt wieder importieren aber jetzt kommt immer die Fehlermeldung:"invalid project desciption. Reason: invalid project desciption". Darunter steht: "C:\Users\henny_000\workspace\library overlaps the location of another project: 'library'"Was kann ich da jetzt tun?

  • Moin,


    welche IDE benutzt du?
    Der Fehler scheint darauf hin zu deuten, dass dein eigentliches Projekt ActionBarSherlock nicht als Abhängigkeit hat und deine IDE deshalb die Referenzen nicht auflösen kann.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Zitat


    - in den Workspace Ordner kopiert (nicht in ein Projekt),



    Kopier den mal lieber woanders hin, dann bei New -> Open Project from Existing source (und da meinetwegen den Haken -> Copy 2 Workspace)
    damit holst du den Sherlock sauber rüber


    und dann soltest du auch den haken haben (isLibrary)

  • Super, danke das hat schon mal funktioniert. Jetzt habe ich aber leider eine Fehlermeldung in meinem App Projekt. Wenn ich den Ordner des Projekts dann aber öffne zeigt er mir keinen Fehler mehr an. Woran liegt das?
    Und er zeigt mir das hier:

    Java
    public boolean onCreateOptionsMenu(Menu menu) {
    		menu.add(0, 1, 0, "Über")
            .setIcon(R.drawable.ic_myIcon)


    rot unterstrichen an.

  • Zitat

    Jetzt habe ich aber leider eine Fehlermeldung in meinem App Projekt.


    Was steht denn da ?? (einfach mal mit der Mause drüber hovern dann, erzählt dir eclipse mehr.



    Bei Actionbarsherlock bzw generell unter Android 3+ werden die OptionsMenü in der Actionabar angeheftet.
    Bei mir sieht die Methode aber auch nicht anders aus, am besten noch mal schauen was er als fehler wirft.


    Java
    @Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		menu.add(0,MENU_ITEM_REFRESH, 0, "Aktualisieren")
    		    .setIcon(R.drawable.gd_action_bar_refresh)
    		    .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    		return super.onCreateOptionsMenu(menu);
    	}



    -> Noch ein Hinweis die SupportLib welche bei Actionabrsherlock beiliegt, ist älter als die aktuelle. EInfach mal ins Actionbar sherlock projekt gehen und die SupportLib gegen die in deinem Projektordner ersetzen. (kopieren)

  • Das sieht bei mir alles folgendermaßen aus:

  • Dann hast du oben noch alte Imports von Android drin, wegen der Menüs musst du die ActionBar Imports nutzen



    also die alten android.view.Menu ect raus hauen und die AB import reinnehemen.


    com.actionbarsherlock.app.ActionBar
    com.actionbarsherlock.view.Menu
    com.actionbarsherlock.view.MenuItem
    com.actionbarsherlock.view.MenuInflater



    bzw. die Imports der Supportlibrary

  • Danke, jetzt ist schonmal weniger rot markiert :)
    Das sind die jetzt noch markierten Stellen:

    Java
    menu.add(0, 1, 0, "Über")

    und

    Java
    getMenuInflater().inflate(R.menu.main, menu);


    Er sagt "Syntax error on tokens, delete these tokens" bzw. "Return type for the method is missing"


    Sind die imports so korrekt?


    Danke für deine Geduld!

  • Zitat


    "Über"



    aber da steht nicht wirklich quote sonder Anführungszeichen oder ????



    und schau noch mal hier ich glaube , da ist etwas zu viel ( der untere Teil steht einfach so da)





    noch mal meine Methode zum vergleich


  • Okay, läuft. Aber jetzt hat Eclipse einen Fehler, er zeigt mir an das Projekt habe einen Fehler, aber beim Öffnen des Ordners wird leider kein Fehler angezeigt. Den Fehler hatte ich seit vorhin, als ich die Referenz gemacht habe. Leider kann ich die App damit weder auf dem Emulator laufen lassen noch irgendwo anders installieren :( Kennst du solche Probleme?

  • Hier mal alle Stellen, die ich verändert habe:

    Java
    public class MainActivity extends SherlockActivity {




    EDIT: Ich habe unten mal auf Problems gecklickt und er hat mir jetzt einige Probleme angezeigt. Da wären folgende Fehler im Projekt:

    1. Jar mismatch! Fix your dependencies BMIDroid Unknown Android Dependency Problem (6 Mal!)


    Sowie folgende Warnungen in der libary:

    1. The method getActivityIconWithCache(ComponentName) from the type SuggestionsAdapter is never used locally SuggestionsAdapter.java /library/src/com/actionbarsherlock/widget line 663 Java Problem
    2. The value of the field SuggestionsAdapter.mSearchManager is not used SuggestionsAdapter.java /library/src/com/actionbarsherlock/widget line 68 Java Problem


    Ich habe bei Stackoverflow den Tipp gefunden, dass man die support libary umbennenen soll. Wie soll ich das machen?

  • Hmm so ganz ohne Fehlermeldung kann man nur Rätselraten.


    Evenl mal der Reihe nach


    -> Sherlock hast du als eigene Projekt in deinem Workspace
    -> ActionBarSherlock öffnen kontrollieren das die SupportLib im /libs Ordner die selbe ist wie in deinem Projekt
    (noch besser die SupportLib als externe JAR hinzufügen als Quelle dann die supportLib in deinem Projekt)
    -> Haken bei isLibrary


    -> ActionBarSherlock (oben bei Project mal schauen das "Build automaticlly" auch an ist.
    -> AcctionbarSherlock als Projekt einfach offen lassen



    -> Dein Projekt:



    Zur Sicherheit mal unter


    -> Rechts Klick .> Properties -> Java Build Path _> Reiter "Libraries" -> Unterpunkt "Android Dependencies" alle JARs einfach raushauen


    -> Project -> Clean


    Rechts Klick -> Properties (Eigenschaften) -> Android -> ganz unten wo Library "Add" und er müsste Dir nur ActionBarsherlock als LibProjekt anbieten





    so jetzt mal schauen, und dann mal posten was Eclipse dir erzählt






    Edit:
    gerade erst das von Dir gelesen


    1. Jar mismatch! Fix your dependencies BMIDroid Unknown Android Dependency Problem (6 Mal!)



    Das ist der Beweis das die SupportLib in unterschiedlichen Versionen vorliegt

  • prüf doch erst einmal von Hand (Explorer) die Dateigrößen der SupportLibray welche im ActionBarsherlock projekt drin liegt
    und die in deinem Projekt. Wenn die schon mal unterschiedlich sind, musst du die ältere durch die neuere ersetzen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!