如何在Handler android中使用共享首选项

时间:2015-09-15 06:07:52

标签: android sharedpreferences

我正在使用此代码来保存字符串:

    public class MySharedPref {
    private static final String APP_SHARED_PREFS = "TripDetails";
    private SharedPreferences appSharedPrefs;
    private Editor prefsEditor;

    public MySharedPref(Context activity) {
        this.appSharedPrefs = activity.getSharedPreferences(APP_SHARED_PREFS,
                Activity.MODE_PRIVATE);
        this.prefsEditor = appSharedPrefs.edit();
    }

    public String getPrefsValue(String value) {
        return appSharedPrefs.getString(value, "");
    }

    public void savePrefsValue(String key, String Value) {
        prefsEditor.putString(key, Value);
        prefsEditor.commit();
    }

    public String getImei(String value) {
        return appSharedPrefs.getString(value, "");
    }

    public void saveImei(String key, String Value) {
        prefsEditor.putString(key, Value);
        prefsEditor.commit();
    }

    public Boolean checkKey(String Key) {
        if (appSharedPrefs.contains(Key))
            return true;
        else
            return false;
    }
}

并致电:

MySharedPref mySharedPref = new MySharedPref(context);
mySharedPref.saveImei("Imei", Imei);

但在处理程序中。我得到空指针异常。 我没有理由,为什么会这样。请帮助。

logcat的:

java.lang.NullPointerException
09-15 11:46:52.213: W/System.err(17575):    at com.example.util.MySharedPref.<init>(MySharedPref.java:14)
09-15 11:46:52.215: W/System.err(17575):    at com.example.util.SerialRecieveThread.handleWaitBuffer(SerialThread.java:273)
09-15 11:46:52.216: W/System.err(17575):    at com.example.util.SerialRecieveThread.step(SerialThread.java:612)
09-15 11:46:52.219: W/System.err(17575):    at com.example.util.SerialRecieveThread.run(SerialThread.java:172)
09-15 11:46:52.220: W/System.err(17575):    at java.lang.Thread.run(Thread.java:841)

1 个答案:

答案 0 :(得分:1)

使用以下方式

第1步

创建一个Application类

public class MyApplication extends Application{

    private static Context context;

    public void onCreate(){
        super.onCreate();
        MyApplication.context = getApplicationContext();
    }

    public static Context getAppContext() {
        return MyApplication.context;
    }
}

第2步

在Android Manifest文件中声明如下

<application android:name="com.xyz.MyApplication">

</application>

第3步

MySharedPref mySharedPref = new MySharedPref(MyApplication.getAppContext());
mySharedPref.saveImei("Imei", Imei);