鉴于此代码,如何从checkbox-和textpreference中获取值并将它们存储在域对象中?
public class MonitorPreferences extends PreferenceActivity {
private PersistenceManager pm;
private Monitor monitor;
private boolean mActive;
private String mName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
pm = new PersistenceManager(getApplicationContext());
addPreferencesFromResource(R.xml.monitors_pref);
fetchDomainObject();
}
private void fetchDomainObject() {
monitor = pm.fetchMonitor(getIntent().getLongExtra(SuperListActivity.EXTRA_KEY_MONITOR_ID, -1));
}
private void persistDomainObject(Monitor monitor) {
pm.persist(monitor);
}
}
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="General">
<CheckBoxPreference
android:key="active_chkbox"
android:title="Active"
android:defaultValue="true"
android:persistent="false"/>
<EditTextPreference
android:key="name_txt"
android:dependency="active_chkbox"
android:title="Name"
android:summary="Enter a name"
android:dialogTitle="Enter a name"
android:dialogMessage="Enter a name"
android:defaultValue="John Doe"
android:persistent="false"/>
</PreferenceCategory>
</PreferenceScreen>
原始问题:使用PreferenceActivity的外观创建正常的活动 我的目标是从一个Activity中编辑一个域对象的变量,其中包含了库存android偏好的外观。实现这一目标的最简单方法是什么?
是否可以创建PreferenceActivity并以某种方式修改它以显示/编辑域对象的值而不是SharedPreferences中的值?
答案 0 :(得分:2)
当然。只需添加代码即可将值存储到数据库中,并且不要忘记在首选项xml中使用android:persistent=false
属性。
final CheckBoxPreference soundcb = (CheckBoxPreference) findPreference("active_chkbox");
此外,您可以使用soundcb
对象执行许多操作:读取值,设置onClickListeners等。