我尝试从sharedPreferences获取我保存的记录,但我不能。一无所获。
在LostDialogFragment
我保存数组,我调试这个,这总是保存数据。我从MainGameFragment
public void saveArray() {
SharedPreferences prefs = getContext().getSharedPreferences("user_and_score", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = prefs.edit();
Set<String> set = new HashSet<>();
set.addAll(MainGameFragment.LEADERBOARDUSER);
edit.putStringSet("user_and_score", set);
edit.apply();
}
以下是MainGameFragment
public static ArrayList<String> LEADERBOARDUSER = new ArrayList<>();
在SettingsFragment
中,我尝试获取已保存的数组
private ArrayList<String> leaderBoardList = new ArrayList<>();
case LEADER_BOARD:
recyclerView.setVisibility(View.VISIBLE);
SharedPreferences prefs = getContext().getSharedPreferences("user_and_score", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = prefs.edit();
Set<String> set = new HashSet<>();
edit.putStringSet("user_and_score", set);
set.addAll(leaderBoardList);
edit.apply();
adapter = new CustomAdapterForSettingsFragment(leaderBoardList);
recyclerView.setAdapter(adapter);
break;
我的问题是如何获得保存的数组?
或者我没有保存。我现在正在调试,没有人保存,请帮助我在共享中保存数组
答案 0 :(得分:1)
要保存设置问题,请尝试以下操作: - 1.)提供一些不同的密钥来保存您的设置,例如
edit.putStringSet("your_set", set);
2。)使用
edit.commit()
要获得你的Set,请尝试以下方法: -
SharedPreferences prefs = getContext().getSharedPreferences("user_and_score", Context.MODE_PRIVATE);
Set<String> newSet = prefs.getStringSet("your_set", new HashSet<String>());
通过执行此操作,您可以在newSet中获取已保存的集。 感谢!!!
答案 1 :(得分:0)
答案 2 :(得分:0)
试试这个,
dependencies {
compile 'com.google.code.gson:gson:2.2.+'
}
设置值
List<String> leaderBoardList = new ArrayList<>();
Gson gson = new Gson();
String jsonText = gson.toJson(leaderBoardList);
prefsEditor.putString("key", jsonText);
prefsEditor.commit();
检索值
List<String> leaderBoardList = new ArrayList<>();
Gson gson = new Gson();
String jsonText = Prefs.getString("key", null);
String[] text = gson.fromJson(jsonText, String[].class); //EDIT: gso to gson
leaderBoardList = Arrays.asList(text);
leaderBoardList = new ArrayList(leaderBoardList );
答案 3 :(得分:0)
我遇到了与共享首选项类似的问题,我无法获得以前保存的字符串。
对我有用的解决方案是通过PreferenceManager获取SharedPrefs实例:
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext());
然后获取字符串集:
Set<String> set = sharedPref.getStringSet("your_set", new HashSet<String>());
答案 4 :(得分:0)
最好的方法是:
1)将您的列表转换为JsonArray
说jsonArrayPref
2)将jsonArrayPref.toString()保存到共享首选项
3)什么时候你想要那个List然后以字符串形式从首选项中获取jsonArrayPref
4)然后将其转换为JsonArray
并渲染数据并使用它