java - 安卓工作室 | 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)
感谢大家!
解决方案
推荐阅读
- html - 生成 PDF 页面时删除空格页面
- html - CSS:有没有办法只在显示滚动条时定位元素?
- python - 为什么 Django 将 url 重定向到不需要的页面
- node.js - Angular 不会运行我的 ng serve - Sass Loader 错误
- google-apps-script - 如何删除包含子字符串或为空的列?
- javascript - 重定向到页面而不是操作表单地址
- git - git:什么命令搜索所有远程分支以查找对给定文件的更改
- python-3.x - 导入名称中有空格的文件
- javascript - 创建用于在打字稿中获取文本的 cypress 自定义命令
- javascript - 在页面加载期间加载任意资源并显示加载指示器