PreferenceActivity afficher / modifier les valeurs d'un objet de domaine
-
28-10-2019 - |
Question
Compte tenu de ce code, comment obtenir les valeurs de la case à cocher et de la préférence de texte et les stocker dans l'objet de domaine?
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>
Question d'origine: Créer une activité normale avec l'apparence et la convivialité d'une PreferenceActivity Mon objectif est de modifier les variables d'un objet de domaine à partir d'une activité avec l'apparence et la convivialité des préférences Android courantes.Quelle est la manière la plus simple d'y parvenir?
Serait-il possible de créer une PreferenceActivity et de la modifier d'une manière ou d'une autre pour afficher / modifier les valeurs d'un objet de domaine au lieu des valeurs de SharedPreferences?
La solution
Bien sûr.Ajoutez simplement le code pour stocker les valeurs dans la base de données et n'oubliez pas de mentionner l'attribut android:persistent=false
dans vos préférences xml.
final CheckBoxPreference soundcb = (CheckBoxPreference) findPreference("active_chkbox");
De plus, vous pouvez faire beaucoup de choses avec l'objet soundcb
: lire la valeur, définir onClickListeners et ainsi de suite.