Shared Preferences

Versi 1.0

1. Mengenal Shared Preferences

Menyimpan data pada aplikasi Android dapat dilakukan dengan beberapa cara, antara lain :

  • Shared Preferences
    Adalah penyimpanan data primitif pada file internal aplikasi dengan pasangan key-value.
  • Internal Storage
    Adalah penyimpanan data privat pada memory internal device.
  • External Storage
    Adalah penyimpanan data yang bersifat publik (dapat diakses siapapun) pada memory external device.
  • SQLite Databases
    Adalah penyimpanan data terstruktur pada database internal aplikasi.
  • Network Connection
    Adalah penyimpanan data pada server dengan perantara jaringan (internet).

Yang akan kita bahas pada artikel ini adalah penyimpanan data dengan Shared Preferences. Penyimpanan dengan metode ini merupakan penyimpanan data yang paling sederhana. Sederhana pada data yang disimpan maupun metode penyimpanannya. Data yang dapat disimpan hanyalah data primitif seperti int, boolean, float, long, dan String. Data disimpan dengan konsep pasangan Key-Value. Key digunakan sebagai id dari data dan Value adalah nilai datanya, misalnya key adalah “nama” dan value adalah nilai dari nama itu misalnya “dian”, sehingga pasangan Key-Valuenya adalah (key,value) = (“nama”,”dian”).

2. Implementasi Shared Preferences

Shared Preferences bisa dimanfaatkan untuk penyimpanan data yang sederhana. Saya akan mencontohkan penggunaan Shared Preferences sebagai seperti berikut ini.
Pertama kita buat xml layout pada file activity_main.xml seperti berikut ini.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Masukkan Nama : " />

    <EditText
        android:id="@+id/et_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/bt_save"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Simpan" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Nama Tersimpan : " />

    <TextView
        android:id="@+id/tv_saved_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal" />

</LinearLayout>

Kemudian kita buat class MainActivity menjadi seperti berikut ini.

import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

	private SharedPreferences pref;
	private final String KEY_NAME = "key_name";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		pref = getSharedPreferences("mypreferences", MODE_PRIVATE);

		showSavedName();

		final EditText etName = (EditText) findViewById(R.id.et_name);

		Button bSave = (Button) findViewById(R.id.bt_save);
		bSave.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View arg0) {
				String name = etName.getText().toString();
				if(name.equals("")){
					Toast.makeText(MainActivity.this, 
                                              "Nama tidak boleh kosong",
                                              Toast.LENGTH_SHORT).show();
				}else{
					saveName(name);
					showSavedName();
				}
			}
		});
	}

	private void showSavedName(){
		String savedName = getSavedName();

		TextView tvSavedName = (TextView) findViewById(R.id.tv_saved_name);
		tvSavedName.setText(savedName);
	}

	private String getSavedName(){
		return pref.getString(KEY_NAME, "-"); 
	}

	private void saveName(String name){
		Editor editor = pref.edit();
		editor.putString(KEY_NAME, name);
		editor.commit();
	}
}

Jalankan project maka aplikasi akan berjalan seperti berikut ini.

1

2

3

Jika aplikasi kita tutup, kemudian kita jalankan lagi, maka pada Nama Tersimpan akan langsung muncul nama Jono. Karena nama terakhir yang disimpan adalah Jono. Maka terbukti bahwa data nama telah berhasil disimpan pada penyimpanan Shared Preferences.

4

Shared Preferences dapat dimanfaatkan untuk membuat berbagai penyimpanan sederhana seperti :

  • Session Account (username dan password) dari aplikasi
  • Data Pengaturan (Setting: bahasa, tema, volume, dsb) dari aplikasi
  • Dan Lain-Lain

3. Download Project

Untuk lebih memudahkan dan memahami tutorial ini, silakan download project-nya di sini dan jalankan di IDE anda.