Banner

Shared Preference





Shared Preferences (SP) merupakan penyimpan data dalam bentuk key-value, value yang disimpan harus dalam bentuk tipe data primitif seperti integer, double, string, booelan.. Shared Preference objek untuk activity diperoleh melalui getPreferences().

Mode Shared Preferences
Ada tiga mode untuk shared preferences (SP):
MODE_PRIVATE
data yang disimpan dalam SP hanya dapat dibaca oleh aplikasi yang  bersangkutan.
• MODE_WORLD_READABLE
data yang disimpan dalam SP dapat dibaca oleh aplikasi lain.
MODE_WORLD_WRITEABLE
data yang disimpan dalam SP dapat dibaca dan diubah oleh aplikasi lain.

Contoh Implementasi Shared Preferences
Pada program ini kita akan membuat program yang akan menulis/menyimpan dan membaca data dari Shared Preferences.
Buat project android dengan ketentuan sebagai berikut :
·       Project name                    : SharedPreferences
·       Build Target                      : Android 2.1-update1
·       Application Name           : SharedPreferences
·       Package name                 : id.ac.ub.pttik.sharpreferences
·       Activity                               : SharePreferencesActivity
·       Min SDK                              : 7

Berikut adalah code untuk menyimpan data ke dalam SharedPreferences beserta penjelasan.

import android.app.Activity;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import android.widget.RadioGroup.OnCheckedChangeListener;

public class MainActivity extends Activity implements OnCheckedChangeListener,

        OnClickListener {

    // inisialisasi variable

private static final String PREFS_KU = "PREFSKU";
private static final String TIPE_MAP = "TipeMap";
private static final String ID = "ID";
private static final String KEY = "Key";

    private RadioGroup radioGroupTipeMap;

    private EditText editID;

    private EditText editKey;

    private Button btnSimpan;

    private boolean tipeMapSatellite;

    private RadioButton radioStreet;

    private RadioButton radioSatellite;

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        // panggil method setupView

        setupView();

    }

    private void setupView() {

        // inisialisasi variable komponen view dari activity sesuai dengan

        // layout main.xml yg telah kita desain

        radioGroupTipeMap = (RadioGroup) findViewById(R.id.radioGroupTipeMap);

        // beri action listener ketika terjadi perubahan check pada radioButton

        // yg terdapat di dalam radioGroup

        radioGroupTipeMap.setOnCheckedChangeListener(this);

        radioSatellite = (RadioButton) findViewById(R.id.radioSatellite);

        radioStreet = (RadioButton) findViewById(R.id.radioStreet);

        editID = (EditText) findViewById(R.id.editID);

        editKey = (EditText) findViewById(R.id.editKey);

        btnSimpan = (Button) findViewById(R.id.btnSimpanKonfigurasi);

        // beri action listener untuk sekali click pada button simpan

        btnSimpan.setOnClickListener(this);

        // Beri nilai shared preferences dengan instance dari

        // getSharedPreferences dengan

        // parameter("nama preferensi","Mode Preferensi")

        // mode_private artinya, setiap activity yg berada dalam aplikasi ini

        // bisa saling berbagi data melalui sharedprefs ini.

        SharedPreferences sharedPreferences = getSharedPreferences(PREFS_KU,

                MODE_PRIVATE);

        // beri nilai tipeMapSatellite dengan data yg telah tersimpan pada

        // sharedPrefs dengan parameter ("Key", "nilai default")

        // maksudnya jika tidak ada data ditemukan pada key TIPE_MAP, maka

        // secara otomatis shared kita berikan nilai default false

        tipeMapSatellite = sharedPreferences.getBoolean(TIPE_MAP, false);

        // cek nilai dari tipeMapSatellite, jika true,. maka radioSatellite yg

        // akan terpilih

        if (tipeMapSatellite) {

            radioSatellite.setChecked(true);

        } else {

            radioStreet.setChecked(true);

        }

        // set text editID & editKey dari data yg di dapat dari sharedPrefs

        // dengan parameter ("Key","nilai default")

        // jika tidak terdapat data pada key ID / KEY., maka sharedprefs akan

        // secara otomatis memberikan nilai default kosong ""

        editID.setText(sharedPreferences.getString(ID, ""));

        editKey.setText(sharedPreferences.getString(KEY, ""));

    }

    // beri action ketika perubahan check radio button terjadi

    @Override

    public void onCheckedChanged(RadioGroup group, int checkedId) {

        // TODO Auto-generated method stub

        switch (group.getCheckedRadioButtonId()) {

        case R.id.radioSatellite:

            SharedPreferences sharedPreferences = getSharedPreferences(

                    PREFS_KU, MODE_PRIVATE);

            // disinilah letak action penyimpanan datanya..

            SharedPreferences.Editor editor = sharedPreferences.edit();

            // beri nilai boolean true pada key TIPE_MAP

            editor.putBoolean(TIPE_MAP, true);

            // jangan lupa panggil method commit agar data tersimpan

            editor.commit();

            Toast.makeText(getApplicationContext(), "Tipe Satellite",

                    Toast.LENGTH_LONG).show();

            break;

        case R.id.radioStreet:

            //penjelasan sama seperti sebelumnya

            SharedPreferences sharedPreferences2 = getSharedPreferences(

                    PREFS_KU, MODE_PRIVATE);

            SharedPreferences.Editor editor2 = sharedPreferences2.edit();

            editor2.putBoolean(TIPE_MAP, false);

            editor2.commit();

            Toast.makeText(getApplicationContext(), "Tipe Street",

                    Toast.LENGTH_LONG).show();

            break;

        }

    }

    @Override

    public void onClick(View v) {

        // TODO Auto-generated method stub

        SharedPreferences sharedPreferences = getSharedPreferences(PREFS_KU,

                MODE_PRIVATE);

        SharedPreferences.Editor editor = sharedPreferences.edit();

        //berikan nilai pada key ID dari EditText editID & editKey

        editor.putString(ID, editID.getText().toString());

        editor.putString(KEY, editKey.getText().toString());

        editor.commit();

        Toast.makeText(getApplicationContext(), "Konfigurasi Tersimpan",

                Toast.LENGTH_LONG).show();

    }
}

Site Links