代码之家  ›  专栏  ›  技术社区  ›  Vichit

Android-我尝试从SharePreference获取数据

  •  -2
  • Vichit  · 技术社区  · 8 年前

    这是我的代码,当我点击这个项目时,我试图插入数据来分享优先权。

    @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)
    

    1 回复  |  直到 7 年前
        1
  •  0
  •   Somesh Kumar tjd    8 年前

    songList.get(position) 将返回一个对象,因此

    更改此行

     String songJson = new Gson().toJson(songList.get(position));
    

    到这个

     String songJson = new Gson().toJson(songList);