首页 > 解决方案 > 安卓工作室 | SharedPreferences 保存对象数组列表时出现问题

问题描述

基本上我正在尝试将数组列表保存到共享首选项中,然后我可以关闭应用程序并最近打开数组列表中的旧数据,但我在创建该方法时遇到了一些问题。

这里的代码:

数组列表:

public Articles articles = new Articles();

保存方法:

public void saveFile(){
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(Container.this);
    SharedPreferences.Editor editor = prefs.edit();
    Gson gson = new Gson();
    String json = gson.toJson(getContainer());
    editor.putString("Saves", json);
    editor.apply();
}

这里的日志:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.bitinbyte.ivycambridgebrassery, PID: 29267
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bitinbyte.ivycambridgebrassery/com.bitinbyte.ivycambridgebrassery.newCount}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6669)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
    at android.content.ContextWrapper.getPackageName(ContextWrapper.java:142)
    at android.preference.PreferenceManager.getDefaultSharedPreferencesName(PreferenceManager.java:537)
    at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:526)
    at com.bitinbyte.ivycambridgebrassery.Container.saveFile(Container.java:170)
    at com.bitinbyte.ivycambridgebrassery.newCount.onCreate(newCount.java:43)
    at android.app.Activity.performCreate(Activity.java:7136)
    at android.app.Activity.performCreate(Activity.java:7127)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)

感谢大家!

标签: java

解决方案


推荐阅读