我在搜索幾小時以查明共享偏好設置中保存布爾列表的原因無效。在共享偏好設置中保存ArrayList
該方法沒有保存或加載某些東西... loadmethod總是返回替代值:所以list_size爲0,布爾值爲false。
首先,我在我的MainActivity創建列表和調用Save方法:
SaveLoadTraining sLoad = new SaveLoadTraining();
ArrayList<Boolean> listBoolTrain = new ArrayList<Boolean>();
listBoolTrain.add(true);
listBoolTrain.add(true);
sLoad.saveArray(listBoolTrain);
子類SaveLoadTraining看起來是這樣的:
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;
}
}
我想不出什麼錯誤...
也許我以錯誤的方式處理上下文? 我只是調用這個方法來獲得在MainActivity的背景:
...
mContext = this;
...
public static Context getMContext(){
return mContext;
}
'我想不出什麼錯誤...' - 我們也不能因爲你還沒有告訴我們;) – Simon
EHM,嘿嘿;) 方法並不保存或加載東西.. 。loadmethod總是返回替代值:所以list_size爲0,布爾值爲false – Bolic
我剛剛複製了你的代碼,它適用於我。請顯示您正在加載並保存的位置或您正在測試的方式。 –