Ich suche nach Stunden, um herauszufinden, warum das Speichern der booleschen Liste in gemeinsamen Voreinstellungen nicht funktioniert.ArrayList in freigegebenen Einstellungen speichern
Die Methoden speichern nicht oder laden etwas ... Die Methode load gibt immer die alternativen Werte zurück: so list_size als 0 und die booleschen Werte als false.
Zunächst einmal erstelle ich die Liste in meinem MainActivity und rufen Sie die Save-Methode:
SaveLoadTraining sLoad = new SaveLoadTraining();
ArrayList<Boolean> listBoolTrain = new ArrayList<Boolean>();
listBoolTrain.add(true);
listBoolTrain.add(true);
sLoad.saveArray(listBoolTrain);
Die Unterklasse SaveLoadTraining wie folgt aussieht:
package de.sebspr.app08.halle;
import java.util.ArrayList;
import android.content.Context;
import android.content.SharedPreferences;
import de.sebspr.app08.MainActivity;
public class SaveLoadTraining {
private Context context;
public static final String PREFS_NAME = "ListFile";
private ArrayList<Boolean> list;
public SaveLoadTraining(){
this.context = MainActivity.getMContext();
}
public void saveArray(ArrayList<Boolean> list){
this.list = list;
SharedPreferences settings = context.getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
int size = list.size();
editor.putInt("list_size", size);
for (int i = 0; i < size; i++) {
editor.remove("list_"+i);
}
for (int i = 0; i < size; i++) {
editor.putBoolean("list_"+i, list.get(i));
}
editor.commit();
}
public ArrayList<Boolean> loadArray(){
SharedPreferences file = context.getSharedPreferences(PREFS_NAME, 0);
list = new ArrayList<Boolean>();
int size = file.getInt("list_size", 0);
for(int i = 0; i<size;i++){
boolean bool = file.getBoolean("list_"+i, false);
list.add(bool);
}
return list;
}
}
Ich kann nicht herausfinden, was schief läuft ...
Vielleicht verfahre ich den Kontext auf einem falschen Weg? Ich nenne nur diese Methode den Kontext des MainActivity zu erhalten:
...
mContext = this;
...
public static Context getMContext(){
return mContext;
}
'Ich kann nicht herausfinden, was schief läuft ...' - weder wir können, weil Sie uns nicht erklärt haben;) – Simon
ehm, hehe;) Die Methoden nicht sparen oder etwas Laden .. Die loadmethod gibt immer die alternativen Werte zurück: so list_size als 0 und die booleschen Werte als false – Bolic
Ich habe gerade Ihren Code kopiert und er funktioniert für mich. Bitte zeigen Sie, wo Sie es laden und speichern oder wie Sie testen. –