Segundo a Google Developers (2025) "Um objeto SharedPreferences indica um arquivo que contém pares de chave-valor e fornece métodos simples para leitura e gravação. Cada arquivo SharedPreferences é gerenciado pelo framework e pode ser privado ou compartilhado."
Caso em seu aplicativo, você queria armazenar dados pequenos do usuário, o SharedPreferences é uma excelente opção. Como especificado na documentação, trata-se de um objeto formado pelo par chave-valor. Para aqueles que já manipularam HashMap na linguagem Java, estarão familiarizados com a estrutura.
Referências do texto entre aspas:
-
GOOGLE DEVELOPERS. Salvar dados chave-valor. Disponível em: https://developer.android.com/training/data-storage/shared-preferences. Acessado em: 14 de jul. 2025.
Exemplos práticos
-
strings.xml
<resources> <string name="app_name">ExemploSharedPreferences</string> <string-array name="cores_array"> <item>Verde</item> <item>Vermelha</item> <item>Azul</item> </string-array> </resources>
-
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_margin="16dp" tools:context=".MainActivity"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editTextNome" android:textAppearance="@style/TextAppearance.AppCompat.Medium" android:hint="Digite seu nome:"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/buttonNext" android:onClick="clicar" android:text=">>" android:textAppearance="@style/TextAppearance.AppCompat.Medium" /> </LinearLayout>
-
activity_segunda.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_margin="10dp" tools:context=".SegundaActivity"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Text" android:textAppearance="@style/TextAppearance.AppCompat.Medium" android:id="@+id/textViewNome"/> <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/listViewCores"/> </LinearLayout>
-
activity_terceira.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/layout" tools:context=".TerceiraActivity"> </androidx.constraintlayout.widget.ConstraintLayout>
-
CorUtil.java
import android.content.Context; import android.view.View; import androidx.core.content.ContextCompat; public class CorUtil { public static void setarCor(View layout, String cor, Context context) { int corFundo; switch (cor) { case "Verde": corFundo = ContextCompat.getColor(context, android.R.color.holo_green_light); break; case "Azul": corFundo = ContextCompat.getColor(context, android.R.color.holo_blue_light); break; case "Vermelha": corFundo = ContextCompat.getColor(context, android.R.color.holo_red_light); break; default: corFundo = ContextCompat.getColor(context, android.R.color.white); break; } layout.setBackgroundColor(corFundo); } }
-
SharedPreferencesUtil.java
import android.content.Context; import android.content.SharedPreferences; public class SharedPreferencesUtil { private static final String NOME_PREFERENCES = "dados"; private static final String NOME_USUARIO_KEY = "nomeUsuario"; private static final String COR_USUARIO_KEY = "corUsuario"; public static boolean salvarDados(Context context, String nomeUsuario, String corUsuario) { SharedPreferences sharedPreferences = context.getSharedPreferences(NOME_PREFERENCES, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString(NOME_USUARIO_KEY, nomeUsuario); editor.putString(COR_USUARIO_KEY, corUsuario); return editor.commit(); } public static String obterNomeUsuario(Context context) { SharedPreferences sharedPreferences = context.getSharedPreferences(NOME_PREFERENCES, Context.MODE_PRIVATE); return sharedPreferences.getString(NOME_USUARIO_KEY, "Nenhum"); } public static String obterCorUsuario(Context context) { SharedPreferences sharedPreferences = context.getSharedPreferences(NOME_PREFERENCES, Context.MODE_PRIVATE); return sharedPreferences.getString(COR_USUARIO_KEY, "Branca"); } public static boolean containsDados(Context context) { SharedPreferences sharedPreferences = context.getSharedPreferences(NOME_PREFERENCES, Context.MODE_PRIVATE); return sharedPreferences.contains(NOME_USUARIO_KEY) && sharedPreferences.contains(COR_USUARIO_KEY); } }
-
MainActivity.java
import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private EditText editTextNome; private Button buttonNext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editTextNome = findViewById(R.id.editTextNome); buttonNext = findViewById(R.id.buttonNext); }//onCreate public void clicar(View view) { String nomeUsuario = editTextNome.getText(). toString(); ler(nomeUsuario); }//clicar private void ler(String nome){ Intent it = null; if (SharedPreferencesUtil.containsDados(this)) { String nomeUsuario = SharedPreferencesUtil.obterNomeUsuario(this); // Toast.makeText(this, nomeUsuario, Toast.LENGTH_SHORT).show(); if(nomeUsuario.equals(nome)){ it = new Intent(MainActivity.this, TerceiraActivity.class); startActivity(it); }else{ it = new Intent(this, SegundaActivity.class); it.putExtra("nomeUsuario",nome); startActivity(it); } } else{ it = new Intent(this, SegundaActivity.class); it.putExtra("nomeUsuario",nome); startActivity(it); } }// }//class
-
SegundaActivity.java
import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class SegundaActivity extends AppCompatActivity implements AdapterView.OnItemClickListener { private TextView textViewNome; private ListView listViewCores; private ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_segunda); textViewNome = findViewById(R.id.textViewNome); listViewCores = findViewById(R.id.listViewCores); Intent intent = getIntent(); String nomeUsuario = intent.getStringExtra("nomeUsuario"); textViewNome.setText(nomeUsuario); String[] cores = getResources().getStringArray(R.array.cores_array); adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, cores); listViewCores.setAdapter(adapter); listViewCores.setOnItemClickListener(this); } @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { // Obter a cor selecionada String escolhido = (String) adapterView.getItemAtPosition(position); gravar(escolhido); } private void gravar(String escolhido) { // Salvar o nome do usuário e a cor escolhida nas preferências compartilhadas String nome = textViewNome.getText().toString(); boolean resposta = SharedPreferencesUtil.salvarDados(getApplicationContext() ,nome,escolhido); if (resposta) { // Se salvou com sucesso, ir para a próxima Activity Intent intent = new Intent(this, TerceiraActivity.class); startActivity(intent); } else { // Se houve erro ao salvar, mostrar um Toast Toast.makeText(this, "Não salvo", Toast.LENGTH_LONG).show(); } } }
-
TerceiraActivity.java
import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Toast; public class TerceiraActivity extends AppCompatActivity { private View layout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_terceira); layout = findViewById(R.id.layout); ler(); } private void ler() { if (SharedPreferencesUtil.containsDados(this)) { String nomeUsuario = SharedPreferencesUtil.obterNomeUsuario(this); Toast.makeText(this, nomeUsuario, Toast.LENGTH_SHORT).show(); String cor = SharedPreferencesUtil.obterCorUsuario(this); CorUtil.setarCor(layout, cor, this); } else { Toast.makeText(this, "Erro no arquivo", Toast.LENGTH_SHORT).show(); } } }