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

标签 android sqlite android-fragments android-preferences

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

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

        addPreferencesFromResource(R.xml.project_settings);
    }
}

我的 Activity :

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 数据库中呢?

最佳答案

将其放在这里是因为有关该主题的其他问题/答案均不令人满意,而且我刚刚完成了此功能(将 PreferenceFragment 中的首选项连接到数据库)。

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

关于android - 在 PreferenceFragment 中从数据库加载/保存设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20432984/

相关文章:

文件资源管理器中的 Android Studios : Android Device Manager shows no files for Nougat 7. 0

具有 int 值的 Android Sqlite 选择 args[]

android - 回到默认 fragment

android - java.lang.IllegalStateException : The specified child already has a parent

android - OnClick 事件重复 ListView 项目

java - android中的GridView,gridView.setAdapater(this)错误

java - Android 的 Random.nextInt(2^N) 有什么问题?

android - 如何在flutter App中接听电话?

Android ContentProvider/Loader 与加载到对象

java - 如何在 PreferenceFragmentCompat 中点击时触发事件