Skip to content

Latest commit

 

History

History
115 lines (85 loc) · 4.72 KB

14.Le stockage de données.md

File metadata and controls

115 lines (85 loc) · 4.72 KB

Le stockage de données

Stocker des données simples

Le point de départ de la manipulation des préférences partagées est la classe SharedPreferences. Elle possède des méthodes permettant d'enregistrer et récupérer des paires de type identifiant-valeur pour les types de données primitifs, comme les entiers ou les chaînes de caractères. L'avantage réel étant bien sûr que ces données sont conservées même si l'application est arrêtée ou tuée.

Exemple : Vous jouez à un jeu sur Android, avant de jouer au jeu, vous choisissez les paramètres du jeu tels que la luminosité, les niveaux de volume et le niveau de difficulté. Après l'avoir terminé, vous pouvez désactiver le jeu et continuer à jouer le lendemain. SharedPreferences vous permet de sauvegarder tous les paramètres que vous avez définis précédemment et vous permet de redéfinir les paramètres qui peuvent être utilisés sans devoir être réinitialisés.

Il existe trois façons d'avoir accès aux SharedPreferences :

  • La plus simple est d'utiliser la méthode statique SharedPreferences PreferenceManager.getDefaultSharedPreferences(Context context) ce qui revient à appeler SharedPreferences getPreferences(MODE_PRIVATE)

  • Si vous désirez utiliser un fichier standard par activité, alors vous pourrez utiliser la méthode SharedPreferences getPreferences(int mode) ce qui revient à appeler SharedPreferences getSharedPreferences (NOM_PAR_DEFAUT, mode)

  • En revanche, si vous avez besoin de plusieurs fichiers que vous identifierez par leur nom, alors utilisez SharedPreferences getSharedPreferences (String name, int mode) où name sera le nom du fichier.

En ce qui concerne le second paramètre, mode, il peut prendre trois valeurs :

  • Context.MODE_PRIVATE, pour que le fichier créé ne soit accessible que par l'application qui l'a créé.
  • Context.MODE_WORLD_READABLE, pour que le fichier créé puisse être lu par n'importe quelle application.
  • Context.MODE_WORLD_WRITEABLE, pour que le fichier créé puisse être lu et modifié par n'importe quelle application.

Exemple Simplifié codé en "dur"

  • un EditText pour rentrer le nom
  • Un bouton pour valider

Mon fichier main_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Votre nom : "
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <EditText
        android:id="@+id/login_nom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Marie"
        android:inputType="text"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Valider"
        android:id="@+id/btn_valider" />

</LinearLayout>
public class MainActivity extends AppCompatActivity {

    public static final String monNom = "Marie";
    private EditText editNom;
    private Button btnValider;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        editNom = findViewById(R.id.login_nom);
        btnValider = findViewById(R.id.btn_valider);

        // La méthode pour avoir accès à l'enregistrement des données
        SharedPreferences rememberNom = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

        btnValider.setOnClickListener(v -> {

            // Récupérer les valeurs de l'input
           String prenom = editNom.getText().toString();

            // Modifier des valeurs dans un SharedPreferences
            SharedPreferences.Editor editor = rememberNom.edit();
            // Insérer ma String (StringParDefaut, nomInput)
            editor.putString(monNom, prenom);
            // sauvegarder
            editor.commit();

            Toast.makeText(MainActivity.this,"Merci",Toast.LENGTH_LONG).show();
        });

    }
}

Pour vérifier que ça a marcher :

  • A droite cliquer sur Device File Explorer
  • data > data > nom de votre app > shared_prefs
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <string name="Marie">pppp</string>
</map>

Il y a bien ce que j'avais entré.