2013-04-08 44 views
2
關鍵

我的查詢是直線前進,不能越過谷歌找到答案:的android共享偏好一個具有多個值

例如:

庫1 - > USERNAME1 - >密碼1

庫2 - > USERNAME2 - >密碼2

庫3 - > USERNAME3 - > password3

正如上面提到的,我有三個不同版本庫的對話框。當用戶自動選擇一個存儲庫時,彈出另一個對話框輸入用戶名和密碼。

所以,我想實現是節省存儲庫名稱,用戶名和密碼與單個鍵共享偏好。

我知道如何創建一個共享PREF對象與單個鍵和值。我正在尋找的是一個帶有單個鍵值和3個值的共享prefobj。

難道真的可能嗎?如果是的話,你可以告訴我一些方向。

+0

我會用String對象的split方法... – 2013-04-08 08:58:46

回答

0

你不能在SharedPreferences對象的抽象層次三個值存儲在同一個文件SharedPreferences一個鍵,至少不會。

可以做的是存儲n個3元組的JSON表示(我認爲這就是你需要的)。換句話說,存儲其從JSONObjectJSONArray A S製成的字符串。這樣,你不必關心分隔符,轉義和其他這樣的煩惱。

0
SharedPreferences prefs = getSharedPreferences(getPathForUser(username, password) + PREF_RESOURCES_NAME, MODE_PRIVATE); 





public static String getPathForUser(String username, String password) { 
     String sUsername = null; 
     String sPassword = null; 

     // sUsername 
     if (username != null && username.trim().length() > 0) { 
      sUsername = username.trim(); 
     } else { 
      sUsername = "defaultUsername"; 
     } 


     // sPassword 
     if (password != null && password.trim().length() > 0) { 
      sPassword = password.trim(); 
     } else { 
      sPassword = "defaultPassword"; 
     } 


     try { 
      return URLEncoder.encode(sUsername, "UTF-8") + "__" + URLEncoder.encode(sPassword, "UTF-8"); 
     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
      return ""; 
     } 
    }