0

我正在尝试使用 SharedPreferences 保存用户 ID。保存为 SharePreferences 的值是否会在我的应用程序中的所有活动中持续存在,以便我可以从任何应用程序访问用户 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 访问用户 ID 的代码。

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

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

4

2 回答 2

0

我假设你的意思是你可以从任何地方访问它们Activity,是的,即使你离开你的应用程序并回来,它们也会持续存在。从文档

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

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

于 2013-03-28T01:59:38.250 回答
0

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

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

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

于 2013-03-28T01:59:55.217 回答