用户可以在我的应用中添加项目,并且我有一个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数据库呢?
答案 0 :(得分:4)
将此处放在此处并不是关于此主题的其他任何问题/答案都令人满意,我刚刚完成了此功能(将PreferenceFragment中的Preferences连接到数据库)。
基本上,您应该为XML中的每个首选项设置android:persistent="false"
。然后,您应该在onCreate()
上手动将值加载到首选项中,并使用setOnPreferenceChangeListener()
进行数据库值更新和首选项摘要字段更新。您可能还需要扩展一些现有的首选项以允许手动设置值,因为其中一些(例如RingtonePreference
)没有设置其值的方法 - 它们只是从SharedPreferences内部获取它们。
答案 1 :(得分:0)
答案是Preference.OnPreferenceChangeListener
和onPreferenceChange
方法中的一些魔法。