Vorgefüllte SharedPreferences

  • 15 Antworten
  • Letztes Antwortdatum
K

kr0llx

Neues Mitglied
0
Hey Leute ich habe eine SharedPreferences Datei die ich gern als Daten an die App anhängen also das man die Apk installiert und die Datenbank schon gefüllt mit installiert wird. So das ich sie gleich benutzen kann. Ich habe dazu jetzt nichts gefunden vieleicht einfach auch weil ich nicht genau weiß nach was ich da genau suchen soll.

MfG
Kr0llx
http://developer.android.com/reference/android/content/SharedPreferences.html
 
Naja zur zeit habe ich meinen Code einfach so aufgebaut das er es voraussetzt das die datenbank da ist und einfach benutzt.

Code:
private SharedPreferences hours = null;
        private SharedPreferences mins = null;
        private String last = "Please wait a few seconds";

        public MyTime(Context context, AppWidgetManager appWidgetManager) {
            this.appWidgetManager = appWidgetManager;
            remoteViews = new RemoteViews(context.getPackageName(),
                    R.layout.main_layout);
            thisWidget = new ComponentName(context, TickiTack.class);
            if (hours == null)
                hours = context.getSharedPreferences("hours", 0);
            if (mins == null)
                mins = context.getSharedPreferences("mins", 0);
        }

und dann halt meine gefüllte datenbank einfach mit DDMS in den Emulator kopiert.
 
Ich weiß zwar nicht warum du mMn die SharedPreferences so umständlich nutzt (du liest da wirklich nur 2 einzelne SharedPreferences-Files aus für zwei Werte die du vmtl. immer zusammen nutzt oder?), aber zeig doch mal ein Beispiel bei dem du einen Wert aus deinen SharedPrefs holst ;) Ich wette mit dir, dass du dort einen "Fallback"-Wert angibst, was soviel heißt wie "vorausgefüllt".
 
Benutzen tue ich das so:
Code:
min = mins.getString(dateM.format(new Date()), null);

Auszug aus meiner datei
Code:
    <string name="05">Fünf nach </string>
    <string name="10">Zehn nach </string>

ich habe zu den verschiedenen Zeiten Strings hinterlegt, die ich mir dann mit der Minute als Key geben lasse.
 
Rate was du anstatt "null" dort hin schreiben könntest;) da kannst du so gesehen deinen fallbackwert/vor ausgefüllt eintragen lassen ...
 
JaJa das ist mir schon klar. Ich glaube es ist nicht Rüber gekommen was mein Problem ist.
Also ich habe Jetzt zwei DBs die gefüllt sind eine:

Der ursprüngliche Beitrag von 09:50 Uhr wurde um 09:52 Uhr ergänzt:

JaJa das ist mir schon klar. Ich glaube es ist nicht Rüber gekommen was mein Problem ist.
Also ich habe Jetzt zwei DBs die gefüllt sind eine
Code:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <string name="00">Zwölf</string>
    <string name="01">Eins</string>
    <string name="02">Zwei</string>
    <string name="03">Drei</string>
    <string name="04">Vier</string>
    <string name="05">Fünf</string>
    <string name="06">Sechs</string>
    <string name="07">Sieben</string>
    <string name="08">Acht</string>
    <string name="09">Neun</string>
    <string name="10">Zehn</string>
    <string name="11">Elf</string>
    <string name="12">Zwölf</string>
    <string name="13">Eins</string>
    <string name="14">Zwei</string>
    <string name="15">Drei</string>
    <string name="16">Vier</string>
    <string name="17">Fünf</string>
    <string name="18">Sechs</string>
    <string name="19">Sieben</string>
    <string name="20">Acht</string>
    <string name="21">Neun</string>
    <string name="22">Zehn</string>
    <string name="23">Elf</string>
</map>

und die andere
Code:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <string name="00"></string>
    <string name="05">Fünf nach </string>
    <string name="10">Zehn nach </string>
    <string name="15">viertel nach </string>
    <string name="20">Zwanzig nach </string>
    <string name="30">halb </string>
    <string name="40">zwanzig vor </string>
    <string name="45">viertel vor </string>
    <string name="50">Zehn vor </string>
    <string name="55">Fünf vor </string>

</map>

und diese beiden DBs möchte ich genau so in meiner app mit instalieren. Also das man später die apk instalieren kann und die zwei DBs genau so drin sind damit ich sie benutzen kann,
 
Also dafür braucht man keine Datenbank. Eine Uhr kann sich die Werte einfach aus den Strings holen. Datenbank ist hierfür imho schlicht ein unpassender Lösungsweg.
 
Ich möchte aber nachher noch andere Strings Verwenden.
 
Sorry, sehe dennoch keinen Sinn darin (muss ich letztlich auch nicht, ist nicht meine App), wollte nur meine Meinung kund tun.



Du kannst auch Datenbanken in den assets Ordner packen und von da aus bei Bedarf aus der App heraus ins Ziel kopieren.
 
Nein diese Daten ändern sich in der Tat nicht. Jedoch fand ich es eigentlich sehr praktisch das ich das ganze als key value pair benutzen kann. weil ich so nur noch die akutelle minute/stunde als key der Datenbank geben muss und den gewünschten String zurück erhalte. Wenn jemand eine andere einfachere methode hat immer raus damit.

Die als assets dazuzupacken und zu laden habe ich versucht bin aber daran gescheitert weil ich hier ein AppWidgetProvider und keine Activity hab.
 
kr0llx schrieb:
Jedoch fand ich es eigentlich sehr praktisch das ich das ganze als key value pair benutzen kann. weil ich so nur noch die akutelle minute/stunde als key der Datenbank geben muss und den gewünschten String zurück erhalte.

Ist aber sehr ineffizient weil dann die statischen Daten einmal im apk und noch einmal im Dateisystem liegen.
Kostet dem Nutzer nur unnötig Speicher.

Kommt dann halt drauf an wie viele Daten es am Ende sind.

Aber der Link zu den Ressourcen sollte eigentlich helfen, so wie ich das sehe unterscheiden sich die Zugriffsarten nicht sonderlich. Weil ne richtige Datenbank (und damit richtige Abfragen) willst du ja auch nicht verwenden.

cu
 
Zuletzt bearbeitet:
Okay und wie würde das dann effektiv ausehen? also Wo soll ich die daten jetzt ablegen und wie kann ich dann drauf zu greifen?
 
Da ist doch Beispielcode. Fange einfach mit den gezeigten Beispielen an und spiele dich rein.

cu
 
In der strings.xml (oder wie auch immer deine Datei heißen mag) ablegen.

Je nachdem, ob du auf Strings oder, was hier garnicht so abwegig wäre, Arrays zugreifst, kannst du per getResources.getString()... oder getResources.getStringArray()... zugreifen.
 
Zurück
Oben Unten