Android: preferencias compartidas
Android proporciona muchas formas de almacenar datos de una aplicación. Una de estas formas se llama Preferencias compartidas. Las preferencias compartidas le permiten guardar y recuperar datos en forma de pares de clave y valor.
Para utilizar las preferencias compartidas, debe llamar a un método getSharedPreferences () que devuelve una instancia SharedPreference apuntando al archivo que contiene los valores de las preferencias.
SharedPreferences sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
El primer parámetro es la clave y el segundo parámetro es el MODO. Además del privado, hay otros modos disponibles que se enumeran a continuación:
No Señor | Modo y descripción |
---|---|
1 | MODE_APPEND Esto agregará las nuevas preferencias con las preferencias ya existentes. |
2 | MODE_ENABLE_WRITE_AHEAD_LOGGING Bandera abierta de base de datos. Cuando está configurado, habilitaría el registro de escritura anticipada de forma predeterminada |
3 | MODE_MULTI_PROCESS Este método comprobará la modificación de las preferencias incluso si la instancia de preferencia compartida ya se ha cargado |
4 | MODE_PRIVATE Al configurar este modo, solo se puede acceder al archivo usando la aplicación de llamada |
5 | MODE_WORLD_READABLE Este modo permite que otra aplicación lea las preferencias |
6 | MODE_WORLD_WRITEABLE Este modo permite que otra aplicación escriba las preferencias |
Puede guardar algo en las preferencias compartidas utilizando la clase SharedPreferences.Editor. Llamará al método de edición de la instancia SharedPreference y lo recibirá en un objeto editor. Su sintaxis es -
Editor editor = sharedpreferences.edit();
editor.putString("key", "value");
editor.commit();
Además del método putString, hay métodos disponibles en la clase del editor que permiten la manipulación de datos dentro de las preferencias compartidas. Se enumeran de la siguiente manera:
No Señor | Modo y descripción |
---|---|
1 | apply() Es un método abstracto. Confirmará sus cambios desde el editor al objeto sharedPreference al que está llamando |
2 | clear() Eliminará todos los valores del editor. |
3 | remove(String key) Eliminará el valor cuya clave se haya pasado como parámetro |
4 | putLong(String key, long value) Guardará un valor largo en un editor de preferencias. |
5 | putInt(String key, int value) Guardará un valor entero en un editor de preferencias |
6 | putFloat(String key, float value) Guardará un valor flotante en un editor de preferencias |
Ejemplo
Este ejemplo demuestra el uso de las preferencias compartidas. Muestra una pantalla con algunos campos de texto, cuyo valor se guarda cuando se cierra la aplicación y se recupera cuando se vuelve a abrir.
Para experimentar con este ejemplo, debe ejecutarlo en un dispositivo real después de desarrollar la aplicación de acuerdo con los pasos a continuación:
Pasos | Descripción |
---|---|
1 | Utilizará Android Studio para crear una aplicación de Android en un paquete com.example.sairamkrishna.myapplication. |
2 | Modifique el archivo src / MainActivity.java para agregar código de progreso para mostrar el cuadro de diálogo de progreso giratorio. |
3 | Modifique el archivo res / layout / activity_main.xml para agregar el código XML respectivo. |
4 | Ejecute la aplicación y elija un dispositivo Android en ejecución e instale la aplicación en él y verifique los resultados. |
A continuación se muestra el contenido de la modificación 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();
}
});
}
}
A continuación se muestra el contenido del archivo de actividad principal modificadores/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>
A continuación se muestra el contenido del contenido modificado del archivo. res/values/strings.xml.
<resources>
<string name="app_name">My Application</string>
</resources>
A continuación se muestra el archivo predeterminado de contenido 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>
Intentemos ejecutar su aplicación. Supongo que ha conectado su dispositivo móvil Android real con su computadora. Para ejecutar la aplicación desde Android Studio, abra uno de los archivos de actividad de su proyecto y haga clic en el icono Ejecutar de la barra de herramientas. Antes de iniciar su aplicación, Android Studio mostrará la siguiente ventana para seleccionar una opción donde desea ejecutar su aplicación de Android.
Seleccione su dispositivo móvil como una opción y luego verifique su dispositivo móvil que mostrará la siguiente pantalla:
Ahora solo ingrese algo de texto en el campo. Puse un nombre aleatorio y otra información y hago clic en el botón Guardar.
Ahora, cuando presione el botón Guardar, el texto se guardará en las preferencias compartidas. Ahora presione el botón Atrás y salga de la aplicación. Ahora ábralo de nuevo y verá todo el texto que ha escrito en su aplicación.