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.
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>
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;
// 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);
}
}
}
Las primeras lneas nos ayudarn a obtener los datos desde el activity_main
y crear una referencia hacia la SharedPreference