如何在多个片段文件中使用共享首选项

时间:2014-11-23 16:44:11

标签: java android fragment preferences shared

我需要在多个fragment文件中使用共享首选项(不能使用活动文件)我必须存储多个字符串行。

如何在片段中初始化shared preferences?我该如何写/读?

我是否需要在主活动中初始化它,还是必须在片段活动文件中初始化它?

技巧如:

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

......不起作用。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

使用配置文件应存储在SQL数据库中,而不是共享首选项。由此得名。数据库存储数据,首选项存储首选项值。当你滥用API时,你不能抱怨API。

从SQLite文档开始