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

如何在android中使用共享首选项,android,sharedpreferences,Android,Sharedpreferences,我正在使用此代码保存字符串: public class MySharedPref { private static final String APP_SHARED_PREFS = "TripDetails"; private SharedPreferences appSharedPrefs; private Editor prefsEditor; public MySharedPref(Context activity) { this.a

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

    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)
java.lang.NullPointerException
09-15 11:46:52.213:W/System.err(17575):位于com.example.util.MySharedPref.(MySharedPref.java:14)
09-15 11:46:52.215:W/System.err(17575):位于com.example.util.SerialReceiveThread.handleWaitBuffer(SerialThread.java:273)
09-15 11:46:52.216:W/System.err(17575):位于com.example.util.SerialReceiveThread.step(SerialThread.java:612)
09-15 11:46:52.219:W/System.err(17575):位于com.example.util.SerialReceiveThread.run(SerialThread.java:172)
09-15 11:46:52.220:W/System.err(17575):at java.lang.Thread.run(Thread.java:841)
使用以下方法

步骤1

创建一个应用程序类

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清单文件中声明以下内容

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

</application>

可能
context
null
我有use活动,但仍然得到相同的异常。有其他方法吗?如果添加stacktraceHandler,会出现什么异常?什么处理程序?更新了日志cat,请查看。在作用域中无法访问LoginActivity类型的封闭实例:(@Developer请尝试我编辑的答案。由于您使用的是thread,然后是SharedReferences,您需要的是ApplicationContext而不是activity Context。我很乐意为您提供帮助…:)
MySharedPref mySharedPref = new MySharedPref(MyApplication.getAppContext());
mySharedPref.saveImei("Imei", Imei);