Temps: 1h.
Difficulté: **
Pre-requis : ABC d'Android,
Kotlin
Ce challenge propose de sauvegarder la préférence auditive de l'utilisateur (avec ou sans son), et d'enregister le nombre d'ouverture de l'application, avec Kotlin, et les Shared preferences.
.Voici, les étapes d'implémentation :
> Ajouter un écran de paramètres
> Lire le fichier shared preferences de défaut
> Écrire dans le fichier shared preferences de défaut
Pour commencer, créez un nouveau projet Android ou ouvrez en un existant.
xml
en cliquant droit sur le dossier res
,
ensuite faite New > Android Resource Directory. Choisissez xml pour Resource type.fragment_settings.xml
, dans le dossier res/xml
.
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
</PreferenceScreen>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"&g
<SwitchPreference
android:defaultValue="true"
android:key="@string/pref_sound"
android:title="@string/label_sound" />
</PreferenceScreen>
avec :
<string name="pref_sound" translatable="false">SOUND</string>
<string name="label_sound">Sound:</string>
Gradle Script
du module app/
:
implementation "androidx.preference:preference-ktx:1.1.1"
SettingsFragment
,
elle hérite de PreferenceFragmentCompat
:
class SettingsFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
}
}
onCreatePreferences()
:
addPreferencesFromResource(R.xml.fragment_settings)
false
:
PreferenceManager.setDefaultValues(this, R.xml.fragment_settings, false)
Note : Une alternative est d'utiliser le modèle de projet Settings Activity avec Android Studio.
Le but est de lire la valeur précédemment enregistrée avec la clé pref_sound
.
val defaultSharedPref = PreferenceManager.getDefaultSharedPreferences(this)
val isSound = defaultSharedPref.getBoolean(getString(R.string.pref_sound), true)
À présent, isSound
contient la préférence auditive de l'utilisateur.
SharedPreferences
peut être ouvert en écriture ou en lecture.
L'objectif est d'enregistrer le nombre d'ouverture de l'application.
val editor: SharedPreferences.Editor = defaultSharedPref.edit()
onCreate()
,
incrémenter la valeur liée à la clé NB_OPENED :
var nb = defaultSharedPref.getInt(PREF_NB_OPENED, 0) + 1
editor.putInt(PREF_NB_OPENED, nb)
avec :
companion object { const val PREF_NB_OPENED = "NB_OPENED" }
editor.apply()
Enfin, ce challenge nous donne l'opportunité de traiter les SharedPreferences
du côté UI comme du côté fichier.
Obtenez les codes sources dans les Ressources supplémentaires
de ce thème sur les Paramètres Utilisateur.