SharedPreferences不适用于保存

时间:2014-10-26 10:10:55

标签: android sharedpreferences

我正在使用SharedPreferences来保存用户名,但它无效。

登录Activity(阅读):

ocUserName = (EditText)findViewById(R.id.userNameText);

SharedPreferences prefs = this.getPreferences(Context.MODE_PRIVATE);
String userNameKey = "userName";
String userNameTV = prefs.getString(userNameKey,null);
SharedPreferences.Editor editor = prefs.edit();

if(userNameTV != null) {
    ocUserName.setText(userNameTV); 
}

在第二个Activity(写):

SharedPreferences prefs = 
    getSharedPreferences("com.mesbahsoft.IRIB", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
String userNameKey = "userName";
editor.putString(userNameKey, ocUser);
editor.commit();

3 个答案:

答案 0 :(得分:0)

我认为问题是你无法读取书面价值。您需要在登录活动中使用相同的文件:

SharedPreferences prefs = this.getSharedPreferences("com.mesbahsoft.IRIB", Context.MODE_PRIVATE);

如果这不起作用,请明确指出您遇到问题的位置,并指明看到的例外情况。

答案 1 :(得分:0)

您正在访问活动中的不同共享偏好

this.getPreferences( Context.MODE_PRIVATE);this.getSharedPreferences( <activity's class name>, Context.MODE_PRIVATE);

的简写

在登录活动中,请使用此

getSharedPreferences("com.mesbahsoft.IRIB", MODE_PRIVATE);

参考文献:

http://developer.android.com/reference/android/app/Activity.html#getPreferences(int)

http://developer.android.com/reference/android/content/Context.html#getSharedPreferences(java.lang.String,int)

答案 2 :(得分:0)

Activity.getPreferences(int mode)(在您的登录活动中使用)有一条评论:

  

检索{@link SharedPreferences}对象,以访问此活动专用的首选项。

在您的第二个活动中,您使用Activity.getSharedPreferences(String name, int mode)并提供您的应用ID作为名称。

实际上,您在每项活动中使用两组不同的共享偏好。

如果您打算在整个应用程序中使用共享首选项,我建议使用PreferenceManager.getDefaultSharedPreferences(Context context)