Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.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.lang.NullPointerException与context.GetSharedReferences(存储名称,0)_Java_Android_Sharedpreferences - Fatal编程技术网

java.lang.NullPointerException与context.GetSharedReferences(存储名称,0)

java.lang.NullPointerException与context.GetSharedReferences(存储名称,0),java,android,sharedpreferences,Java,Android,Sharedpreferences,我创建了一个用于处理SharedReferences的类。在我的活动中,我试图添加一个项目,但出现以下错误 06-05 17:01:53.950: E/AndroidRuntime(3488): FATAL EXCEPTION: main 06-05 17:01:53.950: E/AndroidRuntime(3488): java.lang.NullPointerException 06-05 17:01:53.950: E/AndroidRuntime(3488): at com.

我创建了一个用于处理
SharedReferences
的类。在我的
活动中
,我试图添加一个项目,但出现以下错误

06-05 17:01:53.950: E/AndroidRuntime(3488): FATAL EXCEPTION: main
06-05 17:01:53.950: E/AndroidRuntime(3488): java.lang.NullPointerException
06-05 17:01:53.950: E/AndroidRuntime(3488):     at com.xcxcxc.helpers.Prefs.init(Prefs.java:16)
06-05 17:01:53.950: E/AndroidRuntime(3488):     at com.xcxcxc.helpers.Prefs.addStringProperty(Prefs.java:30)
06-05 17:01:53.950: E/AndroidRuntime(3488):     at com.xcxcxc.usersadapter.SplashActivity$1.callback(SplashActivity.java:78)
06-05 17:01:53.950: E/AndroidRuntime(3488):     at com.xcxcxc.usersadapter.SplashActivity$1.callback(SplashActivity.java:1)
这是我处理
SharedReferences
的代码

import android.content.Context;
import android.content.SharedPreferences;

public class Prefs {

    public static final String STORAGE_NAME = "ApplicationPrefs";

    private static SharedPreferences settings = null;
    private static SharedPreferences.Editor editor = null;
    private static Context context = null;

    public static void init(Context cntxt) {
        context = cntxt;
    }

    private static void init() {
        settings = context.getSharedPreferences(STORAGE_NAME, 0);
        editor = settings.edit();
    }

    /* String values */
    public static void addStringProperty(String name, String value) {
        if (settings == null || editor == null) {
            init();
        }
        editor.putString(name, value);
        editor.commit();
    }

    public static String getStringProperty(String name) {
        if (settings == null || editor == null) {
            init();
        }
        return settings.getString(name, null);
    }
}
Prefs.addStringProperty("client_id", "1JDkv9sdfj8sf63rjs");
这是我在
活动中调用的代码

import android.content.Context;
import android.content.SharedPreferences;

public class Prefs {

    public static final String STORAGE_NAME = "ApplicationPrefs";

    private static SharedPreferences settings = null;
    private static SharedPreferences.Editor editor = null;
    private static Context context = null;

    public static void init(Context cntxt) {
        context = cntxt;
    }

    private static void init() {
        settings = context.getSharedPreferences(STORAGE_NAME, 0);
        editor = settings.edit();
    }

    /* String values */
    public static void addStringProperty(String name, String value) {
        if (settings == null || editor == null) {
            init();
        }
        editor.putString(name, value);
        editor.commit();
    }

    public static String getStringProperty(String name) {
        if (settings == null || editor == null) {
            init();
        }
        return settings.getString(name, null);
    }
}
Prefs.addStringProperty("client_id", "1JDkv9sdfj8sf63rjs");

看起来上下文为空。在addStringProperty(..)之前设置上下文


context
似乎为null。试着打电话

public static void init(Context cntxt)
首先

此语句必须导致NPE。
如何以及在何处调用
init(Context-cntxt)
方法


除非上下文对象被初始化,否则您将得到一个
NPE
。首先修复它。

上下文
可能为空,这就是为什么会出现空指针异常:

private static void init() {
    settings = context.getSharedPreferences(STORAGE_NAME, 0);
    editor = settings.edit();
}
首先调用公共静态void init(Context cntxt)或处理空值:

private static void init() {
    if(context != null){
       settings = context.getSharedPreferences(STORAGE_NAME, 0);
       editor = settings.edit();
    }
}

您的
context
为null,因此NPE。因此,请首先调用此
init(context-cntxt)
方法,并检查
if(null!=context){}