szukam godzin, aby dowiedzieć się, dlaczego oszczędzanie logiczną listę udostępnionych w preferencjach nie działa.Zapisz ArrayList w udostępnionych preferencji
Metody nie są zapisywanie lub ładowanie coś ... The loadmethod zawsze zwraca alternatywne wartości: tak list_size jako 0 i wartości logiczne jako fałszywe.
Przede wszystkim tworzę listę w moim główną działalność i wywołać metodę Save:
SaveLoadTraining sLoad = new SaveLoadTraining();
ArrayList<Boolean> listBoolTrain = new ArrayList<Boolean>();
listBoolTrain.add(true);
listBoolTrain.add(true);
sLoad.saveArray(listBoolTrain);
Podklasa SaveLoadTraining wygląda następująco:
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;
}
}
nie mogę dowiedzieć się, co jest nie tak ...
Może obsługiwać kontekst w niewłaściwy sposób? po prostu wywołać tę metodę, aby uzyskać kontekst główną działalność:
...
mContext = this;
...
public static Context getMContext(){
return mContext;
}
'Nie mogę dowiedzieć się, co jest nie tak ...' - Nie możemy, bo nie powiedział nam;) – Simon
ehm, hehe;) Metody nie są zapisywanie lub ładowanie coś .. . na loadmethod zawsze zwraca alternatywne wartości: tak list_size jako 0 i wartości logiczne jako fałszywy – Bolic
właśnie skopiowany kod i to działa na mnie. Pokaż, gdzie ładujesz i zapisujesz lub jak testujesz. –