nullpointerexception getSharedPreferences

时间:2013-04-25 12:07:31

标签: android sharedpreferences

我想在我的Android应用中保存一些偏好设置。但是当我试图获得共享偏好时,我得到了一个nullpointerexception。这是错误:

04-25 13:58:44.814: W/System.err(22795): java.lang.NullPointerException
04-25 13:58:44.824: W/System.err(22795):    at com.koeriers.standaard.SharedPreferences.setData(SharedPreferences.java:27)
04-25 13:58:44.829: W/System.err(22795):    at com.koeriers.standaard.actLogin.onCreate(actLogin.java:79)
04-25 13:58:44.834: W/System.err(22795):    at android.app.Activity.performCreate(Activity.java:5206)
04-25 13:58:44.839: W/System.err(22795):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
04-25 13:58:44.844: W/System.err(22795):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
04-25 13:58:44.849: W/System.err(22795):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
04-25 13:58:44.854: W/System.err(22795):    at android.app.ActivityThread.access$700(ActivityThread.java:140)
04-25 13:58:44.859: W/System.err(22795):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
04-25 13:58:44.864: W/System.err(22795):    at android.os.Handler.dispatchMessage(Handler.java:99)
04-25 13:58:44.869: W/System.err(22795):    at android.os.Looper.loop(Looper.java:137)
04-25 13:58:44.874: W/System.err(22795):    at android.app.ActivityThread.main(ActivityThread.java:4921)
04-25 13:58:44.874: W/System.err(22795):    at java.lang.reflect.Method.invokeNative(Native Method)
04-25 13:58:44.879: W/System.err(22795):    at java.lang.reflect.Method.invoke(Method.java:511)
04-25 13:58:44.884: W/System.err(22795):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
04-25 13:58:44.889: W/System.err(22795):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
04-25 13:58:44.894: W/System.err(22795):    at dalvik.system.NativeStart.main(Native Method)

这是我的SharedPreferences类:

package com.myapp.standaard;

import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.widget.EditText;

public class SharedPreferences extends PreferenceActivity {

public static String GUID = "8BB4894B-92F7-45AF-9A40-B99D7A06A506";
public static String LicenseKey = "letmein";

EditText etLicense;
android.content.SharedPreferences sharedPrefs;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    try {
        addPreferencesFromResource(R.xml.preferences);
        etLicense = (EditText) findViewById(R.id.etLicense);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public Boolean setData(String setPreference, String setValue) {
    android.content.SharedPreferences.Editor editor = sharedPrefs.edit();
    editor.putString(setPreference, setValue);
    editor.commit();
    return true;
}

public String getData(String getPreference, String errorMessage) {
    sharedPrefs = getSharedPreferences(getPreference, MODE_PRIVATE);
    String returnData = sharedPrefs.getString(getPreference, errorMessage);
    return returnData;
}
}

这是我的Activity中的位置,我试图从我的偏好中检索值:

try{

        SharedPreferences sp = new SharedPreferences();
        licentie = sp.getData("LicenseKey", "Error loading license");
    } catch (Exception e){
        e.printStackTrace();
        licentie = "";
    }

3 个答案:

答案 0 :(得分:0)

你没有调用公共布尔

setData(String setPreference, String setValue)

licentie = sp.getData("LicenseKey", "Error loading license");

上的任何原因

它正在提供nullpointerexception

首先设置“LicenseKey”尝试检索它。

注意 - 您根据我使用的实施方式不正确。

答案 1 :(得分:0)

android.content.SharedPreferences.Editor editor = sharedPrefs.edit();

在此行中,sharedPrefs未初始化。最好在onCreate中初始化你的sharedPref,如下所示。

sharedPrefs = getSharedPreferences(name);

答案 2 :(得分:0)

在编写数据之前,您尚未初始化sharedPrefs对象

sharedPrefs  = _activity.getSharedPreferences(SPName, android.content.Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();

现在设置您的数据,然后提交为

editor.putString(key, value);
editor.commit();