2013-03-28 47 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