2013-03-28 49 views
0

我正在尝试使用SharedPreferences保存用户标识。保存为SharePreferences的值是否在我的应用程序中的所有活动中保持不变,以便我可以从任何应用程序访问用户ID?以下是我保存用户标识的代码。SharedPreferences在Eclipse模拟器中工作吗?

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中?我甚至不知道它是否正在更新。

回答

0

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

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

像这样,您正在您的应用程序之间创建sharedPreference。关于另一个问题的接受答案中的主题有很多解释。 Link to question 正如答案中所讨论的那样,您用于保存偏好的方式只能在保存它的同一活动中使用。

+0

感谢您的回复。我将其更改为getDefaultSharedPreferences并且它工作正常。它也显示在我的logcat中。我认为之前没有显示的原因是因为它是空的。堆栈超载再次出现。作为Android的新手,我非常感谢您的帮助。 – Dave 2013-03-28 03:23:46

0

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

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

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

+0

感谢您的回复。用户标识现在显示在我的logcat中。我能想到的唯一原因是它之前没有显示,因为它是空的。 – Dave 2013-03-28 03:24:49