Android - 我尝试从共享首选项获取数据
Android - I try to get data from SharePreference
这是我的代码,当我单击项目时,我尝试插入数据以共享首选项。
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.popup_Favorite:
songList = songRespones.getSongs();
SharedPreferences sharedPreferences = getContext().getSharedPreferences(
SharePreferenceKey.SONG_LIST, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
String songJson = new Gson().toJson(songList.get(position));
editor.putString(SharePreferenceKey.SONG_LIST, songJson);
editor.apply();
showMessage("អ្នកបានរក្សាទុក");
break;
case R.id.popup_cencel:
showMessage("Cancel");
break;
}
return false;
}
});
这是我想要从共享首选项中获取数据的代码
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
SharedPreferences sharedPreferences = getContext().getSharedPreferences(
SharePreferenceKey.SONG_LIST, Context.MODE_PRIVATE);
String getSongJson = sharedPreferences.getString(SharePreferenceKey.SONG_LIST, "N/A");
List<SongRespones> songList;
if (!getSongJson.equals("N/A")) {
Type type = new TypeToken<List<SongRespones>>(){}.getType();
songList = new Gson().fromJson(getSongJson, type);
Log.e("ppppp", songList.size() + "");
}
}
但是我无法得到它。它显示错误如下:
FATAL EXCEPTION: main Process: com.vichit.khmersong, PID: 20040
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException:
Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
at com.google.gson.Gson.fromJson(Gson.java:899)
at com.google.gson.Gson.fromJson(Gson.java:852)
at com.google.gson.Gson.fromJson(Gson.java:801)
请帮帮我:
您正在存储一个 json 对象,因为 songList.get(position)
将 return 一个对象,所以
更改此行
String songJson = new Gson().toJson(songList.get(position));
到这个
String songJson = new Gson().toJson(songList);
这是我的代码,当我单击项目时,我尝试插入数据以共享首选项。
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.popup_Favorite:
songList = songRespones.getSongs();
SharedPreferences sharedPreferences = getContext().getSharedPreferences(
SharePreferenceKey.SONG_LIST, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
String songJson = new Gson().toJson(songList.get(position));
editor.putString(SharePreferenceKey.SONG_LIST, songJson);
editor.apply();
showMessage("អ្នកបានរក្សាទុក");
break;
case R.id.popup_cencel:
showMessage("Cancel");
break;
}
return false;
}
});
这是我想要从共享首选项中获取数据的代码
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
SharedPreferences sharedPreferences = getContext().getSharedPreferences(
SharePreferenceKey.SONG_LIST, Context.MODE_PRIVATE);
String getSongJson = sharedPreferences.getString(SharePreferenceKey.SONG_LIST, "N/A");
List<SongRespones> songList;
if (!getSongJson.equals("N/A")) {
Type type = new TypeToken<List<SongRespones>>(){}.getType();
songList = new Gson().fromJson(getSongJson, type);
Log.e("ppppp", songList.size() + "");
}
}
但是我无法得到它。它显示错误如下:
FATAL EXCEPTION: main Process: com.vichit.khmersong, PID: 20040
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException:
Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
at com.google.gson.Gson.fromJson(Gson.java:899)
at com.google.gson.Gson.fromJson(Gson.java:852)
at com.google.gson.Gson.fromJson(Gson.java:801)
请帮帮我:
您正在存储一个 json 对象,因为 songList.get(position)
将 return 一个对象,所以
更改此行
String songJson = new Gson().toJson(songList.get(position));
到这个
String songJson = new Gson().toJson(songList);