Spara inställningar - SharedPreferences?

Diskussion i 'Frågor, support och diskussion' startad av hackan, 26 aug 2009.

  1. hackan

    hackan Teen Droid Medlem

    Blev medlem:
    19 jun 2009
    Inlägg:
    473
    Mottagna gillanden:
    7

    MINA ENHETER

    Jag försöker lyckas koda lite till Android, och hittills har jag lyckats ganska bra (relativt sett), med undantaget att jag inte lyckas spara inställningar som görs.

    Man ska i programmet jag skriver kunna välja "Inställningar" och där ha tre (eller fler) kryssrutor (Checkboxes). Det jag vill göra är helt enkelt att spara det som valts, för att man ska slippa välja samma sak varje gång man startar programmet. Problemet som uppstår är däremot att jag får "Force Close" när jag försöker mig på detta. Jag är inte allt för sugen på att klistra in hela min kod, då den är oerhört ostrukturerad, men de raderna jag får problem med är just:

    Kod:
    private SharedPreferences mPrefs;
    (... massa kod mellan, men kan vara bra att veta att jag definierat mPrefs tidigare)
    private void finishUp() {
    // TODO Auto-generated method stub
    SharedPreferences.Editor SPed = mPrefs.edit();
    SPed.putBoolean("mute", mute);
    SPed.putBoolean("vibrate", vibrate);
    SPed.putBoolean("flightmode", flightmode);
    SPed.commit();
    }
    
    Jag har testat att sätta in try-catch, men har inte riktigt koll på hur den ska användas, så fångade allt när jag gjorde det. Det medförde inte mer än att jag inte fick något sparat, men heller inte fick force close (alltså kördes koden antagligen inte). Det verkar vara just den raden jag märkt ut med kommentar som är "problemet", men kommer inte på vad det är. finishUp() anropar jag när någon trycker på Avsluta-knapp, eftersom jag inte hunnit med att sätta mig in i onPause() och liknande saker.

    Skulle vara mycket tacksam om någon kommer på vad jag (eller min dator) gör fel. Kör för övrigt Vista Home Premium (x32) + Eclipse + ADT + android-sdk-windows-1.5_r3, om det är av betydelse.
     
  2. doep

    doep Kid Droid Medlem

    Blev medlem:
    14 aug 2009
    Inlägg:
    98
    Mottagna gillanden:
    0

    MINA ENHETER

    Har du skapat mPrefs någonstans?
    Typ:
    this.mPrefs = PreferenceManager.getDefaultSharedPreferences(myContext);
     
  3. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Vad sager loggen nar du kor i emulatorn? Du borde se en stracktrace dar, och den borde saga vad som ar fel. Om du far NullPointerException pa raden "mPrefs.edit();" sa har doep ratt, om du far nagot annat fel sa vore det bra om du postade felmeddelandet har.

    Vet inte man i sin manifest behover sarskilda rattigheter for att anvanda preferences, men du kan google pa det.
     
  4. svanlund

    svanlund Youth Droid Medlem

    Blev medlem:
    5 jun 2009
    Inlägg:
    223
    Mottagna gillanden:
    0

    MINA ENHETER

    Nej, inga rättigheter krävs för preferences.

    Ett tips är att kika på PreferenceActivity istället, så sparas inställningarna automatiskt. Skapa en ny aktivitet som ärver PreferenceActivity (istället för Activity). Jag har tyvärr inga exempel att ge just nu, men google borde kunna hjälpa till.
     
  5. hackan

    hackan Teen Droid Medlem

    Blev medlem:
    19 jun 2009
    Inlägg:
    473
    Mottagna gillanden:
    7

    MINA ENHETER

    Tack för hjälpen!
    doep hade rätt, missade tydligen det där med att skapa. Det dök upp lite nya problem, men det ska jag nog kunna rätta till själv hoppas jag.