我正在使用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();
答案 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)
答案 2 :(得分:0)
Activity.getPreferences(int mode)
(在您的登录活动中使用)有一条评论:
检索{@link SharedPreferences}对象,以访问此活动专用的首选项。
在您的第二个活动中,您使用Activity.getSharedPreferences(String name, int mode)
并提供您的应用ID作为名称。
实际上,您在每项活动中使用两组不同的共享偏好。
如果您打算在整个应用程序中使用共享首选项,我建议使用PreferenceManager.getDefaultSharedPreferences(Context context)
。