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