Java Android Studio |通过SharedReferences保存对象Arraylist时出现问题

Java Android Studio |通过SharedReferences保存对象Arraylist时出现问题,java,Java,基本上,我正在尝试将arraylist保存到共享首选项,然后我可以关闭应用程序并在最近打开arraylist中的旧数据,但是我在创建方法时遇到了一些问题 代码如下: Arraylist: public Articles articles = new Articles(); 要保存的方法: public void saveFile(){ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(Cont

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

代码如下:

Arraylist:

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)

谢谢大家

您正在将
容器传递给
getDefaultSharedReferences
。这是怎么一回事?你不能传递一个上下文对象吗?两者的区别是什么?我对此感到失望…但基本上是Container。在这个类中,我使用
MyApplication.getAppContext()
(其中MyApplication是扩展
Application
)的方法saveFile和arraylistry。如果有效的话,不要继续使用它。替换为更接近调用
saveFile
的活动的上下文对象。