好吧,我有一个我必须保存的数字列表,我将那些包含换行符(" \ n)分开,然后将它们放入一个字符串中以保存:
List<String> usedTabs = new ArrayList<>();
...
StringBuilder save = new StringBuilder();
if(usedTabs.size()==0) {
save = new StringBuilder("0");
} else {
for(String s: usedTabs) {
save.append(s);
save.append("\n");
}
}
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("saveUsedTabs", save.toString());
editor.commit();
很好,这很有效!当我再次需要它时我又回到我的列表中我这样做:
String save = PreferenceManager.getDefaultSharedPreferences(getContext()).getString("saveUsedTabs", "0");
String tabs[] = save.split("\n");
usedTabs.addAll(Arrays.asList(tabs));
也适用。但是如果我在保存之后重新启动应用程序,那么当我在最后一次之后再次加载它时,会有一些4个空格:"6\n3\n5\n3\n3\n "
这怎么会发生?我已经更改了密钥,以确保我的偏好不被其他任何东西使用。
答案 0 :(得分:0)
使用此代码将您的字符串数据存储在共享首选项中。 如果您正在参加活动,那么
FirebaseDatabase.getInstance().getReference("poi").orderByChild("name").equalTo("anyName")) {
如果你在其他班级,那么只需在开头添加上下文。
希望这会对你有所帮助。
答案 1 :(得分:0)
List<String> usedTabs = new ArrayList<>();
...
StringBuilder save = new StringBuilder();
if(usedTabs.size()==0) {
save = new StringBuilder("0");
} else {
for(String s: usedTabs) {
save.append(s);
save.append("\n");
}
}
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("saveUsedTabs", save.toString().replaceAll(" ",""));
editor.commit();
尝试上述操作,只需在存储值时删除空格。