您好,我正在尝试从 SharedPreferences 存储和获取值。
我的问题是,当我尝试获取我的值时,我得到了空值。
这是我的代码:
public class TwitterSession {
private SharedPreferences sharedPref;
private Editor editor;
private static final String TWEET_AUTH_KEY = "tweet_auth_key";
private static final String TWEET_AUTH_SECRET_KEY = "tweet_auth_secret_key";
private static final String TWEET_USER_NAME = "";
private static final String SHARED = "Twitter_Preferences";
public TwitterSession(Context context) {
sharedPref = context.getSharedPreferences(SHARED, Context.MODE_PRIVATE);
editor = sharedPref.edit();
}
public void storeAccessToken(AccessToken accessToken, String username) {
String token = accessToken.getToken();
String tokenSecret = accessToken.getTokenSecret();
Log.i("accessToken.getToken()", token);
Log.i("accessToken.getTokenSecret()", tokenSecret);
editor.putString(TWEET_AUTH_KEY, token);
editor.putString(TWEET_AUTH_SECRET_KEY, tokenSecret);
editor.putString(TWEET_USER_NAME, username);
if(editor.commit())
Log.i("check","ok");
else
Log.i("token","not ok");
}
public AccessToken getAccessToken() {
String token = sharedPref.getString(TWEET_AUTH_KEY, null);
String tokenSecret = sharedPref.getString(TWEET_AUTH_SECRET_KEY, null);
String userName = sharedPref.getString(TWEET_USER_NAME, null);
if(token != null)
Log.i("token",token);
else
Log.i("token","null");
if(tokenSecret != null)
Log.i("tokenSecret", tokenSecret);
else
Log.i("tokenSecret", "null");
if(userName != null)
Log.i("userName", userName);
else
Log.i("userName", "null");
if (token != null && tokenSecret != null)
return new AccessToken(token, tokenSecret);
else
return null;
}
}
首先我使用 storeAccessToken() 方法。我的日志得到了很好的结果。
Log.i("accessToken.getToken()", token);
Log.i("accessToken.getTokenSecret()", tokenSecret);
返回良好的值,因为if(editor.commit())
我在我的日志中得到“好的”。
当我尝试调用 getAccessToken() 时,我得到空字符串
Log.i("token","null");
Log.i("userName", "null");
Log.i("tokenSecret", "null");
被触发
在我的活动中,我这样使用它:
TwitterSession twitter = new TwitterSession(this);
twitter.getAccessToken();
感谢您的帮助
更新1:
public AccessToken getAccessToken() {
sharedPref = contextTwitter.getSharedPreferences(SHARED, Context.MODE_PRIVATE);
String token = sharedPref.getString(TWEET_AUTH_KEY, null);
String tokenSecret = sharedPref.getString(TWEET_AUTH_SECRET_KEY, null);
String userName = sharedPref.getString(TWEET_USER_NAME, null);
if(token != null)
Log.i("token",token);
else
Log.i("token","null");
if(tokenSecret != null)
Log.i("tokenSecret", tokenSecret);
else
Log.i("tokenSecret", "null");
if(userName != null)
Log.i("userName", userName);
else
Log.i("userName", "null");
if (token != null && tokenSecret != null)
return new AccessToken(token, tokenSecret);
else
return null;
}
这个试过了,不行。
我试图通过我的活动访问我的 SharedPreferences 并且也失败了