Anda di halaman 1dari 5

Uso de Shared Preferences

Agenda Telefnica
Para demostrar el uso de las Shared Preferences se realizar una agenda
telefnica simple, donde guardaremos el nombre y el nmero telefnico,
siendo el nombre la clave del shared preferences.
Primero crearemos el layout de nuestra agenda, con dos TextView, EditText y
Button como se ve en la captura de pantalla.

A continuacin el cdigo del activity_main.xml


<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:textAppearance="?android:attr/textAppearanceMedium"
android:text="Nombre de la persona:"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"

android:id="@+id/editText"
android:layout_below="@+id/textView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Datos"
android:id="@+id/textView2"
android:layout_below="@+id/editText"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:ems="10"
android:id="@+id/editText2"
android:layout_below="@+id/textView2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignRight="@+id/editText"
android:layout_alignEnd="@+id/editText" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="grabar"
android:id="@+id/button"
android:layout_below="@+id/editText2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:onClick="grabar" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="recuperar"
android:id="@+id/button2"
android:layout_alignBottom="@+id/button"
android:layout_toRightOf="@+id/button"
android:layout_toEndOf="@+id/button"
android:onClick="recuperar" />
</RelativeLayout>

Dentro de este cdigo veremos dos puntos a poner atencin.

Estos dos puntos son los eventos onCLick de los dos botones, los cuales
estn llamando a funciones que sern creadas ms adelante, en especfico
en la clase MainActivity.java
A continuacin se empezar a codificar la clase MainActivity para la creacin
y el consumo de la shared preferences.
El cdigo de la clase MainActivity.java es el siguiente:
package ec.edu.epn.agendaconsharedpreferences;
import
import
import
import
import
import
import
import
import

android.content.Context;
android.content.SharedPreferences;
android.support.v7.app.ActionBarActivity;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.view.View;
android.widget.EditText;
android.widget.Toast;

public class MainActivity extends ActionBarActivity {


private EditText et1,et2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1=(EditText)findViewById(R.id.editText);
et2=(EditText)findViewById(R.id.editText2);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void grabar(View v) {
String nombre=et1.getText().toString();
String datos=et2.getText().toString();
SharedPreferences preferencias=getSharedPreferences("agenda",
Context.MODE_PRIVATE);
SharedPreferences.Editor editor=preferencias.edit();
editor.putString(nombre, datos);
editor.commit();
Toast.makeText(this, "Datos grabados", Toast.LENGTH_LONG).show();
}
public void recuperar(View v) {
String nombre=et1.getText().toString();
SharedPreferences prefe=getSharedPreferences("agenda", Context.MODE_PRIVATE);
String d=prefe.getString(nombre, "");
if (d.length()==0) {
Toast.makeText(this,"No existe dicho nombre en la
agenda",Toast.LENGTH_LONG).show();
}
else {
et2.setText(d);
}
}
}

En el cdigo anterior tenemos los siguientes puntos a tomar en cuenta.


Controladores:

Ahora se codificar los mtodos que utilizarn los botones GRABAR y


RECUPERAR.
Para el botn GRABAR, lo que se codificar ser primero la obtencin de una
referencia hacia la shared preference. A continuacin se ingresar los pares
de datos que queramos almacenar, en nuestro caso sera (nombre, datos).

Las primeras lneas nos ayudarn a obtener los datos desde el activity_main
y crear una referencia hacia la SharedPreference

Lo siguiente para poder grabar algo en la SharedPreference necesitamos


inicializar un editor de SharedPreferences y usamos las funciones del editor
para ingresar putString. Debemos tomar en cuenta que siempre debemos
hacer commit con el editor para que se grabe los datos.

Para el botn RECUPERAR, se obtendr una referencia hacia la


SharedPreferences y adems el uso de la funcin get para recuperar valores
a partir de una clave.

Anda mungkin juga menyukai