Android - Préférences partagées

Android offre de nombreuses façons de stocker les données d'une application. L'une de ces méthodes est appelée Préférences partagées. Les préférences partagées vous permettent d'enregistrer et de récupérer des données sous la forme d'une paire clé / valeur.

Pour utiliser les préférences partagées, vous devez appeler une méthode getSharedPreferences () qui renvoie une instance SharedPreference pointant vers le fichier contenant les valeurs des préférences.

SharedPreferences sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

Le premier paramètre est la clé et le deuxième paramètre est le MODE. Outre le privé, d'autres modes sont disponibles ci-dessous -

Sr. Non Mode et description
1

MODE_APPEND

Cela ajoutera les nouvelles préférences avec les préférences déjà existantes

2

MODE_ENABLE_WRITE_AHEAD_LOGGING

Indicateur d'ouverture de la base de données. Lorsqu'il est défini, il activerait la journalisation en écriture anticipée par défaut

3

MODE_MULTI_PROCESS

Cette méthode vérifiera la modification des préférences même si l'instance sharedpreference a déjà été chargée

4

MODE_PRIVATE

En définissant ce mode, le fichier n'est accessible qu'à l'aide de l'application appelante

5

MODE_WORLD_READABLE

Ce mode permet à une autre application de lire les préférences

6

MODE_WORLD_WRITEABLE

Ce mode permet à une autre application d'écrire les préférences

Vous pouvez enregistrer quelque chose dans les préférences partagées à l'aide de la classe SharedPreferences.Editor. Vous appellerez la méthode d'édition de l'instance SharedPreference et la recevrez dans un objet éditeur. Sa syntaxe est -

Editor editor = sharedpreferences.edit();
editor.putString("key", "value");
editor.commit();

Outre la méthode putString, il existe des méthodes disponibles dans la classe d'éditeur qui permettent la manipulation des données dans les préférences partagées. Ils sont répertoriés comme suit -

Sr. NON Mode et description
1

apply()

C'est une méthode abstraite. Il validera vos modifications de l'éditeur vers l'objet sharedPreference que vous appelez

2

clear()

Cela supprimera toutes les valeurs de l'éditeur

3

remove(String key)

Cela supprimera la valeur dont la clé a été passée en paramètre

4

putLong(String key, long value)

Cela enregistrera une valeur longue dans un éditeur de préférences

5

putInt(String key, int value)

Cela enregistrera une valeur entière dans un éditeur de préférences

6

putFloat(String key, float value)

Cela enregistrera une valeur flottante dans un éditeur de préférences

Exemple

Cet exemple illustre l'utilisation des préférences partagées. Il affiche un écran avec quelques champs de texte, dont la valeur est sauvegardée à la fermeture de l'application et ramenée à sa réouverture.

Pour expérimenter cet exemple, vous devez l'exécuter sur un appareil réel après avoir développé l'application en suivant les étapes ci-dessous -

Pas La description
1 Vous utiliserez Android Studio pour créer une application Android sous un package com.example.sairamkrishna.myapplication.
2 Modifiez le fichier src / MainActivity.java pour ajouter un code de progression afin d'afficher la boîte de dialogue de progression de rotation.
3 Modifiez le fichier res / layout / activity_main.xml pour ajouter le code XML correspondant.
4 Exécutez l'application et choisissez un appareil Android en cours d'exécution, installez l'application dessus et vérifiez les résultats.

Voici le contenu de la modification MainActivity.java.

package com.example.sairamkrishna.myapplication;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
   EditText ed1,ed2,ed3;
   Button b1;
	
   public static final String MyPREFERENCES = "MyPrefs" ;
   public static final String Name = "nameKey";
   public static final String Phone = "phoneKey";
   public static final String Email = "emailKey";
	
   SharedPreferences sharedpreferences;

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

      ed1=(EditText)findViewById(R.id.editText);
      ed2=(EditText)findViewById(R.id.editText2);
      ed3=(EditText)findViewById(R.id.editText3);

      b1=(Button)findViewById(R.id.button);
      sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            String n  = ed1.getText().toString();
            String ph  = ed2.getText().toString();
            String e  = ed3.getText().toString();

            SharedPreferences.Editor editor = sharedpreferences.edit();

            editor.putString(Name, n);
            editor.putString(Phone, ph);
            editor.putString(Email, e);
            editor.commit();
            Toast.makeText(MainActivity.this,"Thanks",Toast.LENGTH_LONG).show();
         }
      });
   }

}

Voici le contenu du fichier d'activité principal modifiéres/layout/activiy_main.xml.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
   
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Shared Preference "
      android:id="@+id/textView"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:textSize="35dp" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials Point"
      android:id="@+id/textView2"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true"
      android:textSize="35dp"
      android:textColor="#ff16ff01" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText"
      android:layout_below="@+id/textView2"
      android:layout_marginTop="67dp"
      android:hint="Name"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText2"
      android:layout_below="@+id/editText"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true"
      android:hint="Pass" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText3"
      android:layout_below="@+id/editText2"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true"
      android:hint="Email" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Save"
      android:id="@+id/button"
      android:layout_below="@+id/editText3"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="50dp" />
      
</RelativeLayout>

Voici le contenu du contenu modifié du fichier res/values/strings.xml.

<resources>
   <string name="app_name">My Application</string>
</resources>

Voici le fichier par défaut du contenu AndroidManifest.xml.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>

Essayons d'exécuter votre application. Je suppose que vous avez connecté votre appareil mobile Android à votre ordinateur. Pour exécuter l'application à partir du studio Android, ouvrez l'un des fichiers d'activité de votre projet et cliquez sur l' icône Exécuter dans la barre d'outils. Avant de démarrer votre application, Android studio affichera la fenêtre suivante pour sélectionner une option dans laquelle vous souhaitez exécuter votre application Android.

Sélectionnez votre appareil mobile en option, puis vérifiez votre appareil mobile qui affichera l'écran suivant -

Maintenant, insérez simplement du texte dans le champ. Comme j'ai mis un nom aléatoire et d'autres informations et cliquez sur le bouton Enregistrer.

Désormais, lorsque vous appuyez sur le bouton Enregistrer, le texte sera enregistré dans les préférences partagées. Maintenant, appuyez sur le bouton retour et quittez l'application. Maintenant, ouvrez-le à nouveau et vous verrez tout le texte que vous avez écrit dans votre application.