Android - Utilizando Shared Preferences
Autor: Marcio de Souza | Publicado: 2012-04-26T17:24:00-07:00



Olá Pessoal,


Hoje vou apresentar a classe SharedPreferences, ela fornece um recurso muito útil para nossos aplicativos que é a de ler e salvar pequenas informações de nosso sistema, como por exemplo, salvar o nome do usuário de uma tela de login, e é justamente este exemplo que será apresentado, a interface está bem simplificada apenas para ilustrar o recurso de salvar e recuperar o nome do usuário quando entramos e&nbsp;saímos&nbsp;em nosso aplicativo.

Como de costume abaixo seguem todos os fontes utilizados, eles já estão com comentários para facilitar no aprendizado.

Arquivo main.xml
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" &gt;


    &lt;RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" &gt;

        &lt;TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:text="Usuário:"
            android:typeface="monospace" 
            android:textAppearance="?android:attr/textAppearanceLarge" /&gt;


        &lt;EditText
            android:id="@+id/etUsuario" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/textView1" &gt;

            &lt;requestFocus /&gt;
        &lt;/EditText&gt;

        &lt;TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/etUsuario"
            android:text="  Senha:"
            android:typeface="monospace" 
            android:textAppearance="?android:attr/textAppearanceLarge" /&gt;


        &lt;EditText
            android:id="@+id/etSenha"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/etUsuario"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/etUsuario"
            android:inputType="textPassword" /&gt;

        &lt;CheckBox
            android:id="@+id/chkSalvar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/etSenha"
            android:text="Salvar preferência" /&gt;

        &lt;Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/chkSalvar"
            android:onClick="btnFechar_Click"
            android:text="Fechar programa" /&gt;

    &lt;/RelativeLayout&gt;

&lt;/LinearLayout&gt;



Arquivo PreferenceActivity.java
package br.com.EscolaDeAndroid;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;

public class PreferenceActivity extends Activity {
    public static final String PREFS_NAME = "Preferences";
    EditText etUsuario;
    EditText etSenha;
    
    /**Chamado quando a Activity é executada pela primeira vez.*/
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        etUsuario = (EditText)findViewById(R.id.etUsuario);
        etSenha = (EditText)findViewById(R.id.etSenha);
        
        //Restaura as preferencias gravadas
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        etUsuario.setText(settings.getString("PrefUsuario", ""));
    }
    
    /**Chamado quando a Activity é encerrada.*/
    @Override
    protected void onStop(){
       super.onStop();

       //Caso o checkbox esteja marcado gravamos o usuário
       CheckBox chkSalvar = (CheckBox)findViewById(R.id.chkSalvar);
       if (chkSalvar.isChecked()){
           SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
           SharedPreferences.Editor editor = settings.edit();
           editor.putString("PrefUsuario", etUsuario.getText().toString());
    
           //Confirma a gravação dos dados
           editor.commit();
       }
    }
    
    //Evento click do botão Fechar prorama
    public void btnFechar_Click(View v){
        finish(); // fecha aplicativo
    }
}



Abaixo segue uma imagem do nosso projeto.


Shared Preferences



Para o programa ter o efeito esperado é necessário digitar alguma coisa no campo "Usuário", marcar o checkbox "Salvar preferência" e emseguida clicar no botão "Fechar programa", depois disso é só executar novamente seu aplicativo.

Bem, por enquanto é isso pessoal, espero que tenham gostado e em breve trarei mais novidades para vocês, obrigado e até mais.

Desenvolvi o jogo&nbsp;Circus Puzzle Free&nbsp;ele é um quebra-cabeça e está publicado no Android Market, agradeço a todos que baixarem, jogarem e comentarem.





Desenv com qualidade!