1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Preferences-Beispiel

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von AquaBall, 28.03.2012.

  1. AquaBall, 28.03.2012 #1
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    121
    Erhaltene Danke:
    2
    Registriert seit:
    29.02.2012
    Ich plag mich ziemlich mit den Preferences.

    Auf PreferenceActivity | Android Developers hab ich mich zwar eingelesen, aber das Beispiel funktioniert nicht.
    Spätestens bei 'PreferenceFragment' hilft kein 'import' und kein umbenennen mehr. Offensichtlich ist das erst ab HONEYCOMB definiert, wie ja auch im Text beschrieben ist. Was aber der Satz
    bedeutet, bzw. was ich nun tun kann/muss oder nicht, kapier ich schlichtweg nicht.

    Auch sind mir die Dateien nicht klar:
    Im Code ist einerseits von R.xml.preferences_header und andererseits R.xml.fragmented_preferences und R.xml.fragmented_preferences_inner und ... die Rede, aber nur 2 Inhalte angegeben: vermutlich "preference_headers resource" und mit dem zweiten:
    kann ich auch nichts anfangen. Wie heißt die Datei? Wo bekommt er die anderen R.xml.XXX her? Was ist der Inhalt?


    Ich bin aber aus KompatibilitätsGründen noch an Android 2.33 gebunden.
    Das Beispiel umzubasteln ist mir also nicht gelungen.

    Nun gut, mit Newest Questions - Stack Overflow hab ich dann eine Version zum Laufen gebracht: (addPreferencesFromResource(R.xml.einstellungen))

    Nun wollte ich das noch dynamisch statt statisch machen:
    Code:
    ListPreference listPreferenceCategory = (ListPreference) findPreference("default_category");
    if (listPreferenceCategory != null) {
        ArrayList<Category> categoryList = getCategories();
        CharSequence entries[] = new String[categoryList.size()];
        CharSequence entryValues[] = new String[categoryList.size()];
        int i = 0;
        for (Category category : categoryList) {
            entries[i] = category.getCategoryName();
            entryValues[i] = Integer.toString(i);
            i++;
        }
        listPreferenceCategory.setEntries(entries);
        listPreferenceCategory.setEntryValues(entryValues);
    }
    scheitere hier aber auch wieder, dass das Beispiel nicht funktioniert weil getCategories() nicht erkannt wird.
    (und ich natürlich nicht selbst schreiben kann.)

    Wie kann ich ein Beispiel finden, das zu meiner Umgebung passt?
    und Wie erkenne ich auf Android Developers, ob ein Beispiel zu meiner Umgebung passt?
     
  2. Unicate, 29.03.2012 #2
    Unicate

    Unicate Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Deine Umgebung? Nunja, ich denke das die meisten Beispiele für Eclipse sind, da dort die Precompiler schon eine menge selbst machen. Ich weiß nicht wie es inzwischen mit Netbeans ist. Vielleicht geht das auch inzwischen ganz gut.

    Ansonsten: schau mal hier
     
  3. AquaBall, 29.03.2012 #3
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    121
    Erhaltene Danke:
    2
    Registriert seit:
    29.02.2012
    Ja, ich arbeite auf Eclipse.
    aber vielleicht wurde folgende Zeile in deinen ForumReader nicht übertragen:
    Code:
    Ich bin aber aus KompatibilitätsGründen noch an Android 2.33 gebunden.
    Wie erkenne ich auf AndroidDevelopers, ob ein Beispiel zu dieser Umgebung passt?
    Ich schick dir meine History, wieviel Seiten ich in den letzten ich in den letzten Tagen besucht UND durchgelesen + SourcsCode ausprobiert habe:

    Loading . . . . . . . . . . . . .
    ... aborted.
    Sorry, buffer overflow. Ich glaub ich muss doch auf 128 Bit Adressgröße erweitern.
    Danke für deine konstruktive Hilfe.
     
  4. Unicate, 29.03.2012 #4
    Unicate

    Unicate Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Nicht gleich frech werden!

    Das API Level steht bei AndroidDevelopers immer mit dabei.

    Und wenn du mal google verwendet hättest dann hättest du das hier als ersten Link gefunden:
    Android Preferences | Kaloer.com

    Da ist ein Beispiel inklusive xml und java dabei.


    Wenn das nicht weiterhilft, dann musst du mal dein Problem definieren.

    Beschreibe was du machen willst und was nicht funktioniert!
     
    Zuletzt bearbeitet: 29.03.2012
  5. AquaBall, 30.03.2012 #5
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    121
    Erhaltene Danke:
    2
    Registriert seit:
    29.02.2012
    Ich werd sicher nicht frech, sondern bin immer um freundlichen Ton im Forum bemüht.

    Deshalb geh ich auch davon aus, dass dein Tip
    sehr hilfreich und absolut freundlich gemeint ist. Dafür hab ich micht bedankt.

    Nochmal zu meinen Problem, falls es in meinem 1. Post nicht klar genug beschrieben ist.
    Ich arbeite mit Android 2.33 (API-Level 10, Danke für den Link).
    Das Beispiel PreferenceActivity | Android Developers gilt "PreferenceActivity; Since: API Level 1".
    Aber ich bring es nicht zum laufen. (Aus dem Text les' ich raus, dass es ab HC gilt.)

    Nun frag ich mich:
    Wie kann ich ein Beispiel finden, das zu meiner Umgebung passt?
    und Wie erkenne ich auf Android Developers, ob ein Beispiel zu meiner Umgebung passt, bzw. welcher Teil nicht?
     
  6. Sentence, 30.03.2012 #6
    Sentence

    Sentence Erfahrener Benutzer

    Beiträge:
    242
    Erhaltene Danke:
    51
    Registriert seit:
    27.01.2011
    Phone:
    S3, S6 Edge
    Moin,
    hast du dir dies Beispiel schon einmal angeschaut? Android Development Tutorial

    Oben rechts auf der Seite kannst du sehen, ab welchen API lvl diese Klasse grundsätzlich verfügbar ist. Innerhalb der Seite steht zu jeder Methode oder Konstante rechts immer, ab welchem API lvl diese verfügbar sind.

    MfG
     
    AquaBall bedankt sich.
  7. Unicate, 30.03.2012 #7
    Unicate

    Unicate Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Also ich denke ich verstehe was du meinst. Du willst wissen welche Klassen/Methoden eines Beispiels evtl nicht in 2.3.3 verfügbar sind.

    Also im einfachsten Fall stellst du dein Projekt mal auf Android API 10 um und versuchst das Beispiel nach zu bauen. (Ich entwickle prinzipiell auf dem von mir gegebenen minimum Level, damit ich später nicht gefahr laufe Methoden zu verwenden, die es evtl in meinen minimum noch nicht gibt.)

    Falls es dann in deinem Beispiel Methoden gibt die nicht erkannt werden (Eclipse kann das sehr gut), dann sind diese in deiner verwendeten API noch nicht vorhanden und du musst einen Workaround finden.
    Manchmal hilft es die neu hinzugekommenden Methoden aus den neueren Android-Sourcen zu kopieren.(Ich hatte da mal 1-2 Fälle wo das ging)


    Abwärtskompatibel sollten alle Beispiele sein (Ausnahme ist hier die Contact API, die sich von 1.6 => 2.0 so verändert hat, das keine Abwärtskompatiblität gegeben ist).
     
    AquaBall bedankt sich.
  8. AquaBall, 31.03.2012 #8
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    121
    Erhaltene Danke:
    2
    Registriert seit:
    29.02.2012
    Danke. Endlich bin ich ein kleines, aber wesentliches Stücklein weiter.
    Dieses " zu jeder Methode" habe ich echt immer übersehen, weil es so grau und unscheinbar ist.
    Danke, dass du mich jetzt mit der Nase darauf hingestoßen hast.
    Ich hatte immer nur die API-Verfügbarkeit der Klasse in der 1. Ziele wahrgenommen.
    Jetzt hab ich auch den "Filter by API-Level" kapiert.
    Damit kann ich verstehen und verschmerzen, dass DIESES Code-Beispiel bei mir halt nicht funktionieren kann.

    Dein Link ist auch sehr hilfreich, weil er einen Überblick und Verständnis für die Zusammenhänge auf den Punkt bringt. Und die sehr gut lesbaren Beispiele verlieren sich nicht in den Details. Danke sehr.
     
  9. AquaBall, 31.03.2012 #9
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    121
    Erhaltene Danke:
    2
    Registriert seit:
    29.02.2012
    Du beschreibst genau mein Problem.
    Projekt umstellen brauch ich nicht, weil ich ja auf diesem Level arbeite.
    Eben. Ich auch. (Vermutlich haben alle ihre Vorgaben/Rahmenbedingungen.)
    Im Endeffekt also: Rumprobieren.
    Auf dem KnowHow bin ich noch nicht, solange ich noch Code-Beispiele suchen muss.

    Danke für die Tips.
     

Diese Seite empfehlen