Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在AndroidStudio上保存包含SharedReferences的列表_Java_Android_Listview_Sharedpreferences - Fatal编程技术网

Java 在AndroidStudio上保存包含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

我正在编写一个应用程序,正在努力保存一个带有SharedReferences的列表。当我运行我的应用程序时,它宣布我的应用程序停止工作。请帮忙!!以下是我的代码和日志:

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));
    }

}