2011-02-03 3 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. Какой самый простой способ сделать это?

Можно ли создать a PreferenceActivity и каким-то образом изменить его, чтобы отображать/редактировать значения объекта домена вместо значений из SharedPreferences?

ответ

2

Конечно. Просто добавьте код для сохранения значений в базу данных и не забудьте указать атрибут android:persistent=false в ваших настройках xml.

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

Далее вы можете сделать много вещей с soundcb объекта: прочитать значение, установите onClickListeners и так далее.

+0

Спасибо за ваш вклад. Как получить значения из checkbox и textpreference? Я редактировал вопрос и добавил код. – Holm

+0

@Holm, обновил ответ –

+0

@Holm, рад помочь. –