保存方法(保存列表是一个Arraylist):
public static void saveList(){
editor.putString("list", Calculate.saveList.toString());
}
我的阅读方法(可能是我的问题所在):
public static void readList(){
String arrayString= prefs.getString("list", null);
Calculate.saveList = (ArrayList<String>) Arrays.asList(arrayString.split(","));
}
Logcat错误:
java.lang.RuntimeException:无法启动活动ComponentInfo {com.tsury.icalorie / com.tsury.icalorie.SavedActivity}:java.lang.NullPointerException:尝试调用虚方法'java.lang.String [] java 。null对象引用上的.lang.String.split(java.lang.String)'
我需要保存那个ArrayList,当然还要稍后阅读。
答案 0 :(得分:0)
您可以将数组列表转换为json字符串并将其另存为字符串 并读取该json字符串并将其转换为您的对象。
你可以使用Gson库来做到这一点。
执行以下步骤:
1-在Gradle文件中添加此依赖项
tf = TfidfVectorizer(strip_accents='ascii',
analyzer='word',
ngram_range=(1,1),
min_df = 0,
stop_words = stopwords,
lowercase = True)
创建一个保留ArrayList
的类compile 'com.google.code.gson:gson:2.7'
创建MyList类的实例,并在myStrings中添加您的值。
class MyList{
@SerializedName("myStrings")
public ArrayList<String> myStrings;
}
然后使用以下行将MyList对象转换为Json:
MyList myListInstance=new MyList();
myList.myStrings.add("Peter");
myList.myStrings.add("John");
myList.myStrings.add("Faraz");
并将此json String保存在sharedPreferences
中如果要加载数据,请从sharedPreferences读取json字符串,然后使用此行将其转换为对象
String json=new Gson().toJson(myListInstance)
答案 1 :(得分:0)
确保在保存时在编辑器对象上调用.apply()
或.commit()
。
您也无法将Arrays.asList()
投射到ArrayList
,您应该使用
Calculate.saveList = new ArrayList<String>(Arrays.asList(arrayString.split(",")));