活动之间的共享首选项列表

时间:2012-05-06 16:27:49

标签: android sharedpreferences

我在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);
            }

正如您可能猜到的那样,除了显示正在输入方法的日志之外,还没有制作日志。 帮助任何人可以帮我解决这个古怪的问题?

4 个答案:

答案 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代替您应用的全局偏好设置。