Tuesday, 17 June 2014

PENGERTIAN 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. –

package deedeeitsme.wordpress.com;

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;

//implements OnCheckedChangeListener & OnClickListener untuk action dari radio button & button simpan
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();
    }
}



1 comment: