ActionBarSherlock funktioniert nicht

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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-Quellcode

    1. public class MainActivity extends SherlockActivity

    und in der Manifest Datei habe ich

    Java-Quellcode

    1. 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?

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von henny ()

  • 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!«

  • - 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-Quellcode

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


    rot unterstrichen an.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von henny ()

  • 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-Quellcode

    1. @Override
    2. public boolean onCreateOptionsMenu(Menu menu) {
    3. menu.add(0,MENU_ITEM_REFRESH, 0, "Aktualisieren")
    4. .setIcon(R.drawable.gd_action_bar_refresh)
    5. .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    6. return super.onCreateOptionsMenu(menu);
    7. }



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

    Java-Quellcode

    1. @Override
    2. protected void onCreate(Bundle savedInstanceState) {
    3. super.onCreate(savedInstanceState);
    4. setContentView(R.layout.activity_main);
    5. AppRater.app_launched(this);
    6. ActionBar bar = getSupportActionBar();
    7. }
    8. @Override
    9. public boolean onCreateOptionsMenu(Menu menu) {
    10. menu.add(0, 1, 0, "Über")
    11. .setIcon(R.drawable.ic_myIcon)
    12. .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
    13. return true;
    14. }
    15. getMenuInflater().inflate(R.menu.main, menu);
    16. return true;
    17. }
    18. @Override
    19. public boolean onOptionsItemSelected(MenuItem item) {
    20. if (item.getItemId() == 1) {
    21. setContentView(R.layout.activity_main);
    22. }
    23. if (item.toString().equals("About")) {
    24. setContentView(R.layout.ueber);
    25. mainisopen = false;
    26. }
    27. if (item.toString().equals("Hilfe")) {
    28. setContentView(R.layout.hilfe);
    29. mainisopen = false;
    30. Toast.makeText(getApplicationContext(), R.string.hilfe_toast, Toast.LENGTH_LONG).show();
    31. mainisopen = false;
    32. }
    33. return true;
    34. }
    Alles anzeigen
  • 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-Quellcode

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

    Java-Quellcode

    1. 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?

    Java-Quellcode

    1. import com.actionbarsherlock.app.ActionBar;
    2. import com.actionbarsherlock.app.SherlockActivity;
    3. import de.powercore.bmidroid.R;
    4. import android.os.Bundle;
    5. import android.app.Activity;
    6. import android.view.KeyEvent;
    7. import com.actionbarsherlock.view.Menu;
    8. import com.actionbarsherlock.view.MenuItem;
    9. import com.actionbarsherlock.view.MenuInflater;
    10. import android.view.View;
    11. import android.widget.EditText;
    12. import android.widget.TextView;
    13. import android.widget.Toast;
    Alles anzeigen


    Danke für deine Geduld!

  • "Ü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)


    Java-Quellcode

    1. @Override
    2. public boolean onCreateOptionsMenu(Menu menu) {
    3. menu.add(0, 1, 0,"Über")
    4. .setIcon(R.drawable.ic_myIcon)
    5. .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
    6. return true;
    7. }
    8. getMenuInflater().inflate(R.menu.main, menu);
    9. return true;
    10. }
    Alles anzeigen



    noch mal meine Methode zum vergleich


    @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);

    }

  • 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?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von henny ()

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

    Java-Quellcode

    1. public class MainActivity extends SherlockActivity {

    Java-Quellcode

    1. @Override
    2. protected void onCreate(Bundle savedInstanceState) {
    3. super.onCreate(savedInstanceState);
    4. setContentView(R.layout.activity_main);
    5. AppRater.app_launched(this);
    6. ActionBar bar = getSupportActionBar();
    7. }
    8. @Override
    9. public boolean onCreateOptionsMenu(Menu menu) {
    10. menu.add(0, 1, 0,"Über")
    11. .setIcon(R.drawable.ic_launcher)
    12. .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
    13. return true;
    14. }
    15. @Override
    16. public boolean onOptionsItemSelected(MenuItem item) {
    17. if (item.getItemId() == 1) {
    18. setContentView(R.layout.activity_main);
    19. }
    20. if (item.toString().equals("About")) {
    21. setContentView(R.layout.ueber);
    22. mainisopen = false;
    23. }
    24. if (item.toString().equals("Hilfe")) {
    25. setContentView(R.layout.hilfe);
    26. mainisopen = false;
    27. Toast.makeText(getApplicationContext(), R.string.hilfe_toast, Toast.LENGTH_LONG).show();
    28. mainisopen = false;
    29. }
    30. return true;
    Alles anzeigen



    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?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von henny ()

  • 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.