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

问题描述 投票:2回答:2

用户可以在我的应用程序中添加项目,并且我有一个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数据库呢?

android sqlite android-fragments android-preferences
2个回答
4
投票

把这个放在这里就没有关于这个主题的其他问题/答案都令人满意,我刚刚完成了这个功能(将PreferenceFragment中的Preferences连接到数据库)。

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.