首选项屏幕作为数据库的接口?

时间:2011-07-15 19:35:37

标签: android sqlite layout preferences

是否可以使用首选项屏幕作为读取和写入数据库值的简单接口?

基本上,我喜欢偏好设置屏幕的外观和操作方式,但偏好设置并不适合存储我拥有的所有数据。

我知道如何正确显示它,但我不确定如何访问屏幕上显示的值,以及如何防止它写入首选项文件。

这是一个好主意吗? 感谢。

2 个答案:

答案 0 :(得分:1)

只是对任何有兴趣的人都这样做。我通过使用Preference.OnPreferenceChangeListener()将值存储为int或string或其他任何东西。例如:

et_model.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener(){
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                String val = (String) newValue;
                preference.setSummary(val);
                model = val;
                return true;
            }
        });

然后,一旦用户按下done,我就会以通常的方式使用我的SQLight数据库助手类将数据添加到数据库中。

当我从数据库加载值时,我只使用Preference.SetText(String)和Preference.SetSummary(String)。

我猜它还在写一个偏好文件,因为如果我没有设置首选项的文本,它将加载最后设置的内容,但我不认为这是一个问题。我也可以在关闭活动时删除首选项文件......

如果你想要一个很好的例子,只需查看AlarmClock(现在是DeskClock)的源代码,查看SetAlarm.java和set_alarm.xml,了解布局(保存和取消键)和alarm_prefs.xml,了解实际的首选项布局。

答案 1 :(得分:0)

我认为这不是一个好主意,特别是如果您计划在数据库中使用数据音调。如果您确实想要这样做,我只会扩展您将使用的Preference小部件并让它们与数据库连接。例如,假设您在表中有10个项目,并且您想要选择一个项目(数据库中的行),您将覆盖ListPreference并将其填入适用数据库行的内容。