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(); } }