Java 在AndroidStudio上保存包含SharedReferences的列表
我正在编写一个应用程序,正在努力保存一个带有SharedReferences的列表。当我运行我的应用程序时,它宣布我的应用程序停止工作。请帮忙!!以下是我的代码和日志:Java 在AndroidStudio上保存包含SharedReferences的列表,java,android,listview,sharedpreferences,Java,Android,Listview,Sharedpreferences,我正在编写一个应用程序,正在努力保存一个带有SharedReferences的列表。当我运行我的应用程序时,它宣布我的应用程序停止工作。请帮忙!!以下是我的代码和日志: SharedPreferences SPre1 = getSharedPreferences(Context.MODE_PRIVATE); Set<String> WorkListSet = SPre1.getStringSet("NOTES_SET", new HashSet<String>()); L
SharedPreferences SPre1 = getSharedPreferences(Context.MODE_PRIVATE);
Set<String> WorkListSet = SPre1.getStringSet("NOTES_SET", new HashSet<String>());
List<String> WorkList = new ArrayList<String>(WorkListSet);
public void Update1()
{
SharedPreferences.Editor Editor = SPre1.edit();
Set<String> WorkListSet = new HashSet<String>(WorkList);
Editor.putStringSet("NOTES_SET", WorkListSet);
Editor.apply();
}
private SharedPreferences getSharedPreferences(int modePrivate) {
return null;
}
SharedReferences SPre1=getSharedReferences(Context.MODE\u PRIVATE);
Set WorkListSet=SPre1.getStringSet(“NOTES_Set”,new HashSet());
列表工作列表=新的ArrayList(WorkListSet);
公共void Update1()
{
SharedReferences.Editor=SPre1.edit();
Set WorkListSet=新的HashSet(工作列表);
编辑器.putStringSet(“注释集”,WorkListSet);
Editor.apply();
}
private SharedReferences GetSharedReferences(int modePrivate){
返回null;
}
堆栈跟踪
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.util.Set android.content.SharedPreferences.getStringSet(java.lang.String, java.util.Set)' on a null object reference
at com.newthingtank.along.hello.MainActivity.<init>(MainActivity.java:38)
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.Class.newInstance(Class.java:1606)
at android.app.Instrumentation.newActivity(Instrumentation.java:1066)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2226)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 07
原因:java.lang.NullPointerException:尝试对空对象引用调用接口方法“java.util.Set android.content.SharedReferences.getStringSet(java.lang.String,java.util.Set)”
在com.newthingtank.along.hello.MainActivity.(MainActivity.java:38)
位于java.lang.reflect.Constructor.newInstance(本机方法)
位于java.lang.Class.newInstance(Class.java:1606)
位于android.app.Instrumentation.newActivity(Instrumentation.java:1066)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2226)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
在android.app.ActivityThread.access$800(ActivityThread.java:151)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)上
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:135)
位于android.app.ActivityThread.main(ActivityThread.java:5254)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)07
您正在调用该方法,并且只返回null。因此,实际上,您从一开始就无法获得共享的pref
您需要一个上下文引用并对其调用getSharedReferences()
。您没有提供足够的信息来说明如何获取对上下文的引用,但任何活动实例都足以作为上下文。在SharedReferences
如何调用loadArray??
private SharedPreferences getSharedPreferences(int modePrivate) {
return null;
}
public static boolean saveArray() {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor mEdit1 = sp.edit();
mEdit1.putInt("Status_size", sKey.size());
for(int i=0;i<sKey.size();i++)
{
mEdit1.remove("Status_" + i);
mEdit1.putString("Status_" + i, sKey.get(i));
}
return mEdit1.commit();
}
public static void loadArray(Context mContext) {
SharedPreferences mSharedPreference1 = PreferenceManager.getDefaultSharedPreferences(mContext);
sKey.clear();
int size = mSharedPreference1.getInt("Status_size", 0);
for(int i=0;i<size;i++)
{
sKey.add(mSharedPreference1.getString("Status_" + i, null));
}
}