2016-11-17 128 views
0

我使用SharedPreference在活動之間存儲數據(它不是任何與設置相關的,只是用戶數據)。從xml創建SharedPreference

我創建了一個utils類這些靜態方法來處理寫入/從共享偏好閱讀在我的應用程序的任何地方:

public static <T> void saveData(Context context, String key, T value, String typeOfValue) { 
     SharedPreferences sharedPreferences = context.getSharedPreferences("FILE", Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     switch (typeOfValue) { 
      case ("String"): 
       editor.putString(key, (String) value); 
       break; 
      case ("int"): 
       editor.putInt(key, (Integer) value); 
       break; 
      case ("Boolean"): 
       editor.putBoolean(key, (Boolean) value); 
       break; 
      default: 
       break; 
     } 
     editor.commit(); 
    } 

    public static <T> T loadData(Context context, String key) { 
      SharedPreferences sharedPreferences = context.getSharedPreferences(FILE, Context.MODE_PRIVATE); 
      return (T) sharedPreferences.getAll().get(key); 
    } 

我有以下問題:

  1. 如果我這樣做方式,什麼時候創建首選文件「FILE」?它是在安裝應用程序時創建的,還是僅在調用第一個保存或載入方法時創建的?它是一個XML?
  2. 如果我想確保
    • 在安裝應用程序時創建一個名爲「檔案」的共享偏好文件。
    • 在該文件中,聲明一個永久密鑰列表(以後不再添加密鑰)並將它們全部設置爲默認值。

我該怎麼做?我聽說從XML創建共享偏好可能會有所幫助,但在閱讀了android api後,似乎這種共享偏好僅適用於android中的「設置」。

我知道,你可以在「還挺」設置的默認值,這樣

String username = prefs.getString("username_key", "DefaultUsername"); 

但我不希望這樣,因爲我所有的讀取方法都是通用的。另外,我不喜歡這個原因,我不知道底下會發生什麼。它似乎沒有將默認值實際設置到首選項文件中,但如果尚未設置值,它可能會簡單地返回默認值。

回答

0

您可以查看sharedPreference.xml。 使用Android Studio - >工具 - > Android - > Android設備監視器。 image

文件路徑是/data/data/<package_name>/shared_prefs 因此您可以測試創建文件的時間。

+0

謝謝,但我使用genymotion,儘管我嘗試過,但我永遠無法將它與Android設備管理器掛鉤,因此我無法看到模擬器中實際存在的內容...... –