Merhabalar,

Bu yazımda Android’te veri depolama metodlarından biri olan Shared Preferences’a ait bir örnek paylaşacağım.

Share Preferences veri tabanı gibi yüksek veri depolamalarda kullanılmasa da ufak verileri depolama ve erişme özelliği ile veritabanı yerine kullanılabilecek bir metodtur. İlk olarak Eclipse’de Shared_Preferences isimli bir proje oluşturuyoruz. Main.xml dosyamıza resimdeki gibi sadece giriş yapabileceğimiz bir EditText widget’ı ekliyoruz.

 

 

 

 

 

 

 

EditText widget’ını projemize ekledikten sonra Main.java dosyamızda aşağıdaki kod bloklarını yazmamız gerekecektir. Kod bloklarındaki comment ler ile ne işe yaradıklarından bahsedeceğiz.

import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.view.Menu;
import android.widget.EditText;

public class Main extends Activity {
	private EditText et;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		et= (EditText) findViewById(R.id.editText1); //EditText1 widget'ımızı et'ye tanımlıyoruz.
		SharedPreferences setting=getSharedPreferences("Pref", 0); //SharedPreferences'ı oluşturuyoruz. Buradaki Pref dosya ismidir. Xml dosyası oluşturup bundan da çağırabileceğiniz gibi var olmayan bir dosyanın oluşmasını da bu şekilde sağlayabilirsiniz.
		et.setText(setting.getString("textvalue", ""));// textvalue burada keyvalue ü ifade etmektedir. textvaluedan sonra yaptığımız "" ifadesi EditText widget'ının ilk olarak içinin boş gelmesini sağlıyoruz.
	}
 //Şu duruma kadar projenizi ilk çalıştırdığınızda EditText widget'ının içinin boş gelmesini sağladık. Bundan sonra programdan çıkış işlemi yaparken widget içindeki ifadenin saklanmasını sağlamak için stop eventinde aşağıdaki kod blogunu yazacağız.
	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
		SharedPreferences setting=getSharedPreferences("Pref", 0);
		SharedPreferences.Editor editor=setting.edit(); //Tanımlanan preferences'ta değişiklik yapmak için editor tanımlıyoruz.
		editor.putString("textvalue", et.getText().toString()); //editor'un putstring metoduyla EditText widgetımızdaki değeri saklıyoruz.
		editor.commit();
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
}

Projemizi ilk çalıştırdığımızda EditText widget’ının boş geldiğini göreceğiz. Daha sonra içine istediğimiz bir yazıyı yazıp Emulator’den “Back” tuşuna basalım. Bu uygulamadan çıktığınız anlamına gelmektedir. Eğer “Home” butonuna tıklarsanız çıkış işlemini yapmış olmazsınız. Back tuşuna bastıktan sonra Emulator’den uygulamayı tekrar açtığınızda resimdeki gibi yazdığınız yazının EditText widgetı içinde kayıtlı olduğunu göreceksiniz.

 

Biz bu örnekte basit bir Shared Preferences yöntemini uyguladık. Buna dair başka bir örnek te xml dosyası kullanarak, kullanıcının uygulamayı kaç defa açtığına dair sayaç kontrolü yapılabilir :)