【问题标题】:convert object to json and save using sharedpreferences将对象转换为 json 并使用 sharedpreferences 保存
【发布时间】:2014-02-13 15:19:53
【问题描述】:

我做得对吗?当我回击时,我希望使用 SharedPreferences 保存卡片数组(对象),但是每当我运行程序时,都会出现错误。还是应该在 onCreate 时转换对象?

@Override
    protected void onPause() {

        String json = new Gson().toJson(cards);
        SharedPreferences prefs = getSharedPreferences("CARDARRAY",
                MODE_PRIVATE);
        SharedPreferences.Editor editor = prefs.edit();
        editor.putString("carddArray", json);
        editor.commit();
        Toast.makeText(getBaseContext(), "Settings saved", Toast.LENGTH_SHORT)
                .show();

        super.onPause();
    }

LogCat

02-13 23:22:50.091: E/AndroidRuntime(17941): FATAL EXCEPTION: main
02-13 23:22:50.091: E/AndroidRuntime(17941): java.lang.NoClassDefFoundError: com.google.gson.Gson
02-13 23:22:50.091: E/AndroidRuntime(17941):    at edu.np.ece.mapg.flashnote.Collections.onPause(Collections.java:118)
02-13 23:22:50.091: E/AndroidRuntime(17941):    at android.app.Activity.performPause(Activity.java:5319)
02-13 23:22:50.091: E/AndroidRuntime(17941):    at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1226)
02-13 23:22:50.091: E/AndroidRuntime(17941):    at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3142)
02-13 23:22:50.091: E/AndroidRuntime(17941):    at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3111)
02-13 23:22:50.091: E/AndroidRuntime(17941):    at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3089)
02-13 23:22:50.091: E/AndroidRuntime(17941):    at android.app.ActivityThread.access$800(ActivityThread.java:154)
02-13 23:22:50.091: E/AndroidRuntime(17941):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
02-13 23:22:50.091: E/AndroidRuntime(17941):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-13 23:22:50.091: E/AndroidRuntime(17941):    at android.os.Looper.loop(Looper.java:137)
02-13 23:22:50.091: E/AndroidRuntime(17941):    at android.app.ActivityThread.main(ActivityThread.java:5214)
02-13 23:22:50.091: E/AndroidRuntime(17941):    at java.lang.reflect.Method.invokeNative(Native Method)
02-13 23:22:50.091: E/AndroidRuntime(17941):    at java.lang.reflect.Method.invoke(Method.java:511)
02-13 23:22:50.091: E/AndroidRuntime(17941):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
02-13 23:22:50.091: E/AndroidRuntime(17941):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
02-13 23:22:50.091: E/AndroidRuntime(17941):    at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 什么错误?什么时候? logcat 中有什么?
  • @Aleks G logcat 发布
  • 看起来您缺少 GSON 库。你用的是什么开发环境?您的目标是哪个版本的 Android?
  • @Aleks G 我正在使用 Eclipse。以最低 4.1.2(API 16) 为目标

标签: android json eclipse sharedpreferences


【解决方案1】:

您似乎没有在 gradle 文件中添加 GSON 库:

dependencies {  compile 'com.google.code.gson:gson:2.2.+' }

【讨论】:

  • 了解 OP 如何构建项目会很有趣。如果是 eclipse,那么就没有 gradle 可以处理了。
  • 仍有问题。就像 Aleks G 说的,我正在使用 eclipse 并且还使用最新版本的 gson 2.2.4。
猜你喜欢
  • 2017-06-16
  • 2017-07-11
  • 2015-05-11
  • 2016-12-24
  • 1970-01-01
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多