来自不同班级的共享偏好不起作用

时间:2013-12-16 23:01:28

标签: java android

虽然我在一个活动之外的一个单独的类中定义了共享偏好,但它正在抛出异常。但是,当我在活动中声明它工作得很好时,同样的方法。

我理解应该在调用getshared首选项之前首先启动活动。

代码如下:

sharedpreferencesutil.java
android.content.SharedPreferences prefs =
            getSharedPreferences(Constants.APP_NAME,
                    MODE_PRIVATE);
    android.content.SharedPreferences.Editor editor = prefs.edit();
public boolean savePassword(String password) {
        editor.putString(Constants.PASSWORD, password);
        return editor.commit();
    }

    public String getPassword() {
        return prefs.getString(Constants.PASSWORD, null);
    }



Activity class:

mUserName = (EditText) findViewById(R.id.EditTextUsername);
if(sharedPreferences.getUserNameFromPrefs().isEmpty()) {
        mUserName.setText(sharedPreferences.getUserNameFromPrefs(), TextView.BufferType.EDITABLE);
}

我也尝试使用上下文但仍然在我的activity类中的getSharedPref方法上获得运行时nullpointer异常。

请帮忙

1 个答案:

答案 0 :(得分:1)

这两个链接清楚地回答了您的问题。

Android - How to use SharedPreferences in non-Activity class?

How do I use sharedPreferences outside of an Activity?

SharedPreferenced仅适用于有效的活动上下文。您只需将上下文作为参数传递给您的类,这将解决您的问题。