无法解决方法'getString'错误:SharedPreferences帮助类

时间:2016-03-14 22:54:33

标签: android

我想从多个活动中访问单个共享首选项文件。我遇到了this similar question,它有一个很好解释的答案,建议为此目的创建一个助手类。所以我跟着..这是我的代码: -

1  //helper class
2  public class AppUserInfo {
3  public static final String KEY_PREF_USERNAME = "username";
3  public static final String APP_USER_INFO =
4  AppUserInfo.class.getSimpleName();
5  private SharedPreferences _sharedPrefs;
6  private SharedPreferences.Editor _prefEditor;
7
8  public AppUserInfo(Context context) {
9  this._sharedPrefs = context.getSharedPreferences(APP_USER_INFO,Activity.MODE_PRIVATE);
10 this._prefEditor = _sharedPrefs.edit();
11 }
12
13 public String getUsername() {
14   return _prefEditor.getString(KEY_PREF_USERNAME, "");
15 }
16
17}

但是,在定义getUsername()方法时,IDE(Android Studio)指出了以下错误: -

  

无法解析方法'getString(java.lang.String,java.lang.String)

(还试图在没有帮助类的情况下实现解决方案。结果......)

活动A 中创建user_info共享偏好文件并在其中存储键值对{username : username@example.com}后,我会遇到同样的错误尝试在活动B 中执行此操作: -

SharedPreferences _userInfo = getSharedPreferences("user_info", Context.MODE_PRIVATE);
SharedPreferences.Editor _prefEditor = _userInfo.edit();

String username = _prefEditor.getString("username","");

如何解决此错误? 如果有的话,我也会采取不同的方法。

2 个答案:

答案 0 :(得分:0)

SharedPreferences.Editor不包含getter方法。它有一些方法可以改变您的偏好,例如 - putString(), remove()等。 如果要获取与首选项文件中的键对应的值,请使用 -

 public String getUsername() {
   return this._sharedPrefs.getString(KEY_PREF_USERNAME, "");
}

答案 1 :(得分:0)

你混淆了两件事

private SharedPreferences _sharedPrefs;
private SharedPreferences.Editor _prefEditor;

此处,_sharedPrefs将成为您读取的对象,_prefEditor将成为您的对象。

您的方法应该阅读

public String getUsername() {

    // the read object
    return _sharedPrefs.getString(KEY_PREF_USERNAME, "");
}

public void setUsername(String s) {

    // the write object
    _prefEditor.putString(KEY_PREF_USERNAME, s);
    _prefEditor.commit()
}

在编辑器对象中编辑值时,请务必在其后调用commit以将这些更改推回到可读对象中。