在PreferenceFragment中从/向数据库加载/保存设置

时间:2013-12-06 20:27:47

标签: android sqlite android-fragments android-preferences

用户可以在我的应用中添加项目,并且我有一个PreferenceFragment用于设置项目 这是我的片段:

public class SettingsFragment extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.xml.project_settings);
    }
}

我的活动:

public class Settings extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getFragmentManager().beginTransaction()
            .replace(android.R.id.content, new SettingsFragment())
            .commit();        
    }
}

每个项目的可用设置是相同的,但每个项目应保存数据(例如项目名称)。那么如何将首选项保存到我的sqlite数据库呢?

2 个答案:

答案 0 :(得分:4)

将此处放在此处并不是关于此主题的其他任何问题/答案都令人满意,我刚刚完成了此功能(将PreferenceFragment中的Preferences连接到数据库)。

基本上,您应该为XML中的每个首选项设置android:persistent="false"。然后,您应该在onCreate()上手动将值加载到首选项中,并使用setOnPreferenceChangeListener()进行数据库值更新和首选项摘要字段更新。您可能还需要扩展一些现有的首选项以允许手动设置值,因为其中一些(例如RingtonePreference)没有设置其值的方法 - 它们只是从SharedPreferences内部获取它们。

答案 1 :(得分:0)

答案是Preference.OnPreferenceChangeListeneronPreferenceChange方法中的一些魔法。