2011-02-03 51 views
2

给定此代码,如何从checkbox-和textpreference中获取值并将它们存储在域对象中?PreferenceActivity显示/编辑域对象的值

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 我的目标是从活动一起关注一下编辑域对象的变量并感受股票的Android偏好。完成这个最简单的方法是什么?

是否可以创建PreferenceActivity并以某种方式修改它以显示/编辑域对象的值而不是SharedPreferences中的值?

回答

2

当然。只需添加代码以将值存储到数据库中,并且不要忘记在您的首选项xml中使用维度android:persistent=false属性。

final CheckBoxPreference soundcb = (CheckBoxPreference) findPreference("active_chkbox"); 

而且你可以做很多事情soundcb对象:读值,设置onClickListeners等。

+0

感谢您的输入。如何从复选框和文本首选项获取值?我编辑了问题并添加了一些代码。 – Holm 2011-02-03 15:55:16