En esta práctica de programación multimedia y dispositivos móviles se pedía una aplicación para Android que guardara las preferencias del usuario a través de Shared Preferences. Es muy útil si queremos guardar información y configuraciones del usuario para mostrarle unos contenidos u otros, por ejemplo.
La forma en la que yo he creado esta aplicación con preferencias es la siguiente:
MainActivity.java
Tengo una actividad principal con dos botones, uno para mostrar la pantalla de preferencias y otro para mostrar las preferencias. Al pulsar «Consultar preferencias» obtengo los datos de las preferencias que ha seleccionado el usuario.
package org.pmm.ejsharedpreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button botonpref = (Button)findViewById(R.id.btnprefs);
botonpref.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(MainActivity.this,PantallaPreferencias.class);
startActivity(i);
}
});
Button botonconsultar = (Button)findViewById(R.id.btnconsultar);
botonconsultar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
TextView nombre = (TextView)findViewById(R.id.nombre);
TextView sexo = (TextView)findViewById(R.id.sexo);
TextView mayoredad = (TextView)findViewById(R.id.mayoredad);
TextView sonido = (TextView)findViewById(R.id.sonido);
nombre.setText("Nombre: "+pref.getString("nombre", ""));
sexo.setText("Sexo: "+pref.getString("sexo", ""));
String sonidovalor, mayoredadvalor;
if(pref.getBoolean("sonido", false)){
sonidovalor="Sí";
}else{
sonidovalor="No";
}
if(pref.getBoolean("edad", false)){
mayoredadvalor="Sí";
}else{
mayoredadvalor="No";
}
mayoredad.setText("Mayor de edad: "+mayoredadvalor);
sonido.setText("Sonido: "+sonidovalor);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Para poder trabajar con las preferencias tengo una actividad que extiende de PreferenceActivity y un XML que es un PreferenceScreen donde especifico qué campos quiero en la pantalla de preferencias.
PantallaPreferencias.java
En esta actividad solamente implemento el método onCreate y seleccionamos el fichero XML donde tenemos almacenados los campos de las preferencias.
package org.pmm.ejsharedpreferences;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.app.Activity;
import android.view.Menu;
public class PantallaPreferencias extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.layout.activity_pantalla_preferencias);
}
}
activity_pantalla_preferencias.xml
En este XML utilizamos un PreferenceScreen que contiene varios PreferenceCategory para dividir en secciones la pantalla de preferencias, además dentro de estas categorías están los campos que pediremos al usuario que introduzca.
Este es el resultado de la pantalla de preferencias:
Si estás interesado en saber más sobre las preferencias en Android, aquí te dejo más información sobre almacenamiento en Android en su API.
Deja un comentario