ActionBar activity switch

  • Hallo,
    Ich beschäftige mich garde mit der ActionBar. Jede Activity in der ich eine ActionBar einbinden möchte muss mit dem zusatz "extends ActionBarActivity" beginnen. Stimmz das ?
    Wie mache ich es die Seite unter der ActionBar zu endern. Mache ich das mit einem Intent und einer neuen Klasse oder geht das auch besser?

  • Moin,

    Zitat

    Jede Activity in der ich eine ActionBar einbinden möchte muss mit dem zusatz "extends ActionBarActivity" beginnen.

    Dieser Zusatz von den du sprichst, nennt sich Vererbung. Also das heißt in der Klasse in der du extends ActionBarActivity aufrufst bzw. schreibst, erbt von der Klasse ActionBarActivity.


    Und nein du musst nicht in jeder Actvity wo du eine ActionBar verwenden möchtest davon erben. Das geht wesentlich einfacher.



    1. Schritt: Als erstes musst du ein Menu erzeugen


    Code
    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:title="Info"  android:id="@+id/info"   android:showAsAction="ifRoom|withText"/>   
    <item android:title="Einstellung"  android:id="@+id/seeting"   android:showAsAction="ifRoom|withText"/>
    </menu>


    2. Schritt: überschreibst du die Methode onCreateOptionsMenu



    So mehr ist es gar nicht, natürlich musst du dich noch um die Interaktion kümmern und und und....
    Aber so hast du erstmal ein Einstieg (hoffe ich mal) und gibt ja auch recht viele Tutorial darüber, die teilweise nicht schlecht sind.
    Oder was ich dir auch empfehlen kann bei GitHub mal nach ActionBar zu suche, da findest du Projekte wo Leute dies
    implementiert haben.

  • Ok, Danke für die Antwort
    Ich habe hier den Inhalt der Klassen aus dem Beispiel ActionBarCompat:
    ActionBarActivity.java
    ActionBarHelper.java
    ActionBarHelperBase.java
    ActionBarHelperHoneycomb.java
    ActionBarHelperICS.java
    MainActivity.java
    SimpleMenu.java
    SimpleMenuItem.java
    Was brauche ich noch um mit onCreateOptionsMenu die ActionBar zu erzeugen? Welche Helper sind von nöten?


    Würde mich über eine Antwort freuen.

  • Eine frage noch, Wenn ich den code des Menus bei mit einfüge kommt in der Console folgendes:
    C:\Users\Constantin\workspace\KleinerActionBarVersuch\res\menu\menu.xml:4: error: No resource identifier found for attribute 'showAsAction' in package 'android'


    außerdem wir mir folgendes angezeigt, wenn ich minSdkVersion auf 15 setzen.
    Attribute minSdkVersion (15) is higher than the project target API level (10)
    Was ist die project target API level


    Was jetzt ?
    Muss ich dar noch was implementieren ?

  • minSdkVersion muss kleiner als targetSdkVersion sein - anders gesagt, du willst Code schreiben, der Features von targetSdkVersion benutzt, aber es soll auch laufen auf 'nem Gerät mit minSdkVersion - dann allerdings mit weniger Funktionen (du musst die kritischen Abschnitte ausblenden).


    In deiner Manifest.xml sollte in etwa folgendes stehen:

    HTML
    <uses-sdk android:minSdkVersion="5" android:targetSdkVersion="12" />


    Im Code kommt dann so was:

    Java
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {
    	// was wunderbares machen
    } else {
    	// tröstende Meldung an den Benuter ausgeben
    }


    Die Versionsnummern an deine Wünsche anpassen. 8)

  • Doku sagt, showAsAction gibt's ab API 11 - also sollte es mit target 12 auf jeden Fall funktionieren. Versuchs mal...


    Sonst schau auch noch mal, was Eclipse für eine Version in der Datei project.properties definiert hat - da steht (hoffentlich) target=android-12 - passend zum Manifest.


    Im Code musst du aber dem Benutzer älterer Version die Funktionalität vielleicht auch irgendwie anbieten, da kannst du die if-Abfrage in abgewandelter Form benutzen...

  • Ich gebe folgenden Code in die Mainfest datei ein:

    PHP
    <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="14" />


    Folgende Fehlermeldung:
    Attribute minSdkVersion (11) is higher than the project target API level (10)


    Der kapiert die Änderungen an der target API nicht! An der minSdkVersion aber schon Ich das ein Bug?


    Was kann ich jetzt machen??? Gibt es vielleicht noch einen anderer weg die zu endern?


    PS: (im Anhang die gesamte Manifest Datei)

  • Du kannst es mal versuchen - und schreib, ob es geklappt hat. Vielleicht hat Eclipse da auch eine Einstellung, frag mich aber nicht, wo die sein könnte...


    Ansonsten lege dir in Eclipse ein neues Projekt an für API 14 und kopiere dann deine Dateien in das neue Projekt.


    Dabei gibt's zwischendrin immer mal wieder den Fehler, dass Eclipse einige impoorts am Anfang einträgt für das alte Projekt, einfach löschen und weitermachen...

Jetzt mitmachen!

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