我在1个活动中有这个代码:
mPrefs = getPreferences(MODE_PRIVATE);
String access_token = mPrefs.getString("access_token", null);
long expires = mPrefs.getLong("access_expires", 0);
if(access_token != null) {
facebook.setAccessToken(access_token);
}
if(expires != 0) {
facebook.setAccessExpires(expires);
}
if(!facebook.isSessionValid()) {
Log.e("Facebook Session","Invalid");
//do facebook authorize...
}
else
{
Log.e("Facebook Session","valid");
Intent nextActivity = new Intent (MainActivity.this, FacebookFriendsListActivity.class);
MainActivity.this.startActivity(nextActivity);
}
激活后,将会话显示为“有效”并开始新活动,
但是在新活动中我使用完全相同的代码,尽管从SharedPreferance返回的数据为null。如果它有任何不同,则另一项活动是ListActivity
。
这是第二项活动中的代码:
Log.e("Login","entered func");
mPrefs = getPreferences(MODE_PRIVATE);
String access_token = mPrefs.getString("access_token", null);
long expires = mPrefs.getLong("access_expires", 0);
if(access_token != null) {
Log.e("acces_token","Isn't null");
facebook.setAccessToken(access_token);
}
if(expires != 0) {
Log.e("expires","Isn't null");
facebook.setAccessExpires(expires);
}
正如您可能猜到的那样,除了显示正在输入方法的日志之外,还没有制作日志。 帮助任何人可以帮我解决这个古怪的问题?
答案 0 :(得分:3)
那是因为您使用的是活动隐私偏好设置。请参阅您正在使用的方法的文档getPreferences
。私人活动!
请改用:
getSharedPreferences("some_identifier", MODE_PRIVATE);
答案 1 :(得分:2)
我没有文档链接,但我的经验是:
import android.preference.PreferenceManager;
...
mPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
您可以在上下文中调用getApplicationContext()
。
答案 2 :(得分:0)
每个活动保存首选项;如果你想在活动之间分享它们,你必须将this-reference从第一个活动传递到第二个活动。
答案 3 :(得分:0)
getPreferences
返回的偏好设置仅适用于被调用的Activity
。请使用PreferenceManager.getDefaultSharedPreferences
代替您应用的全局偏好设置。