0

我在 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 返回的数据为空。另一个活动是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

4 回答 4

3

那是因为您正在使用活动私人偏好。请参阅您正在使用的方法的文档getPreferences。该活动专用!

改用这个:

getSharedPreferences("some_identifier", MODE_PRIVATE);
于 2012-05-06T16:32:23.413 回答
2

我没有文档链接,但我的经验是:

import android.preference.PreferenceManager;

...
mPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

您可以getApplicationContext()在上下文中调用。

于 2012-05-06T16:31:46.317 回答
0

每个活动都会保存首选项;如果您想在活动之间共享它们,则必须将 this-reference 从第一个活动传递到第二个活动。

于 2012-05-06T16:31:03.337 回答
0

返回的首选项是被调用的getPreferences独有的。改为用于您的应用程序的全局首选项。ActivityPreferenceManager.getDefaultSharedPreferences

于 2012-05-06T16:31:36.067 回答