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 saímos 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
Arquivo PreferenceActivity.java
Abaixo segue uma imagem do nosso projeto.
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 Circus Puzzle Free ele é um quebra-cabeça e está publicado no Android Market, agradeço a todos que baixarem, jogarem e comentarem.
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 saímos 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
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > <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" /> <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" > <requestFocus /> </EditText> <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" /> <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" /> <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" /> <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" /> </RelativeLayout> </LinearLayout>
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 Circus Puzzle Free ele é um quebra-cabeça e está publicado no Android Market, agradeço a todos que baixarem, jogarem e comentarem.
Desenv com qualidade!
6 comentários:
Seus tutoriais sao otimos...
estou com uma dúvida e se apos eu gravar eu resolvesse desmarcar o checkbox e salvar em branco esta informaçao para nao trazer mais ela preenchida como q ficaria?
abraços
Olá Amigo,
Para limpar o usuário nesse caso seria o seguinte:
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("PrefUsuario", ""));
//Confirma a gravação dos dados
editor.commit();
Obrigado pela visita.
Muito obrigado, funcionou certinho
abraços
Ótimo tutorial! Parabéns!
Pensei em fazer um quiz e ir salvando as respostas escolhidas num Shared Preferences e depois enviar tudo para um sqllite ou webservice, sabe se é possível?
Muito bom o tutorial.
Estava fazendo aqui e colocando uma tela de abertura com um botão para entrar nessa outra tela Shared Preferences, mas como tela secundaria ele não salva.
Alguem poderia me dizer pq não funicona?
Postar um comentário