こんにちは、SharedPreferences から値を保存して取得しようとしています。
私の問題は、値を取得しようとするとnullになることです。
これが私のコードです:
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())
、ログで「OK」を取得します。
getAccessToken() を呼び出そうとすると、null 文字列が返されます
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 でアクセスしようとしましたが、失敗しました