2014-11-23 68 views
1

我需要在多個fragment文件中使用共享首選項(無法使用活動文件)我必須存儲多個字符串行。如何在多個片段文件中使用共享首選項

如何在我的碎片中初始化shared preferences?我如何寫/讀?

我是否需要在我的主要活動中初始化它,還是必須在我的分段活動文件中初始化它?

的技巧,比如:

Context context = getActivity(); 
SharedPreferences sharedPref = context.getSharedPreferences(getString(R.string.preference_file_key), Context.MODE_PRIVATE); 

...不起作用。

+0

你到底需要做什麼?共享首選項旨在存儲您重新啓動應用程序時所需的數據。要在活動和片段之間共享數據,不建議使用此方法,儘管它有效。 – 2014-11-23 17:06:53

+0

但我需要它。也許你可以推薦一種不同的方法?我打算存儲多個字符串行 – user2864772 2014-11-23 17:09:38

+0

您是否在調用將字符串放入sharedpreferences的編輯器實例中調用commit/apply? – 2014-11-23 17:38:26

回答

0

嘗試封裝你SharedPreferences在一些喜好類,與此類似:

class MyPrefs { 

    private static final String FILENAME = "prefs_filename"; 
    private static final String KEY_SOMETHING = "something"; 

    private SharedPreferences mPreferences; 

    public MyPrefs(Context context) { 
     mPreferences = new SharedPreferences(FILENAME, Context.MODE_PRIVATE); 
    } 

    public void setSomething(Something value) { 
     mPreferences.edit().put...(KEY_SOMETHING, value).commit(); 
    } 

    public Something getSomething() { 
     return mPreferences.getSomething(key, defaultValue); 
    } 
} 

這種方式,我們爲我們的非易失性數據存儲乾淨的API。 SharedPreferences太低級,暴露了太多細節,比如存儲文件名,它迫使我們記住所有的鍵和值類型來提取任何數據。它可能在簡單的情況下工作,但只要您存儲的數據變得複雜,就會產生大量問題。嘗試存儲像用戶配置文件幾乎沒有領域或簡單的複雜數字,你會明白。使用原始的SharedPreferences會使你重構王室的痛苦。即使是簡單的數據格式升級(如模式更新)也很快就會變得不可能,因爲無法使用SharedPreferences

0

使用配置文件應存儲在SQL數據庫中,而不是共享首選項。由此得名。數據庫存儲數據,首選項存儲首選項值。當你濫用API時,你不能抱怨它。

從SQLite文檔開始