SharedPreferences在Eclipse模拟器中是否有效?

时间:2013-03-28 01:48:58

标签: android sharedpreferences

我正在尝试使用SharedPreferences保存用户ID。保存为SharePreferences的值是否会在我的应用程序中的所有活动中保留,以便我可以从任何应用程序访问用户ID?以下是我保存用户ID的代码。

    userid = result.substring(3, result.length());
                Log.d("userid at onpostexecute", userid);
                SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();  // to update userid
                editor.putString("userid", userid);
                editor.commit();

以下是从另一个活动的SharedPreferences访问userid的代码。

       SharedPreferences prefs = getPreferences(MODE_PRIVATE);  // to access userid
        String userid = prefs.getString("userid", "");
        Log.d("shared prefs userid", userid);

奇怪的是,上面的代码在我的onCreate方法中,但它没有出现在Logcat中,即使在此代码之前和之后显示其他日志数据。那么我的代码有什么问题我甚至无法在我的logcat中显示它吗?我甚至无法判断它是否正在更新。

2 个答案:

答案 0 :(得分:0)

我认为你的意思是你可以从任何Activity访问它们,是的,即使你离开你的应用程序并回来它们仍然存在。 From the Docs

  

SharedPreferences类提供了一个通用框架,允许您保存和检索原始数据类型的持久键值对。您可以使用SharedPreferences保存任何原始数据:布尔值,浮点数,整数,长整数和字符串。这些数据将在用户会话中持续存在(即使您的应用程序被终止)。

如果这个Log.d("userid at onpostexecute", userid);甚至没有出现,那么我会在那里放一个断点并确保你有userid的值。我还会检查你的logcat过滤器,以确保你获得所有日志。只需确保微调器中的类型设置为“详细”以确保

答案 1 :(得分:0)

如果您告诉,可以在活动之间共享保存为sharedPreferences的值。现在,您正在创建只能访问同一活动的首选项。你需要使用:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = preferences.edit();

像这样,您在应用程序之间创建了一个sharedPreference。在接受另一个问题的答案中,对该主题有很多解释。 Link to question 正如在答案中所讨论的,您用于保存首选项的方式仅适用于保存它的相同活动。