Android shared preferences kullanımı, veri kaydetme ve çağırma
Shared preferences ile küçük çaplı verileri kaydedebilirsiniz. Genelde programların ayarlar bölümündeki veriler ve seçenekler shared preferences ile kaydedilmektedir. Bunun için veritabanı kullanımına gerek yoktur.
Öncelikle yeni bir proje oluşturuyorum.
Projemi oluşturduktan sonra layoutuma örnek için nesneleri ekliyorum.
Adı ve soyadı bilgisini tutan bir örnek yapalım. editTextlerimizin adı sırasıyla editAdi ve editSoyadi olsun.
Butonumun adı da btnKaydet.
SharedPreferences preferences; //preferences için bir nesne tanımlıyorum. SharedPreferences.Editor editor; //preferences içerisine bilgi girmek için tanımlama preferences=PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); editor = preferences.edit();
Gerekli tanımlamaları yaptıktan sonra editor nesnesinden verileri kaydedebilirim.
Her tipte kayıt yapılabilmekte. Şu an String tipinde kayıt işlemi yapacağız.
editor.putString("adi", editAdi.getText().toString()); editor.putString("soyadi", editSoyadi.getText().toString()); editor.commit();
komutları ile bilgileri kaydediyorum. Sonrasında editor.commit() ile de veriler commit edilmeli.
Okurken de ;
String adibilgisi=preferences.getString("adi", "Ad Girin");
Şeklinde okuyabilirim. Birinci anahtarın adı. İkincisi de eğer değer yoksa, kayıt yapılmamışsa değişkenin alacağı değer.
Kaydedip projeyi yeniden çalıştırdığımda da veriler kaybedilmemekte.
Proje butona tıklayınca verileri kaydetmektedir. Programın ilk açılışında da bilgileri almaktadır.
Activity nin tam kodu;
package com.ceylan.sharedornek; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { SharedPreferences preferences; //preferences için bir nesne tanımlıyorum. SharedPreferences.Editor editor; //preferences içerisine bilgi girmek için tanımlama EditText editAdi; EditText editSoyadi; Button btnKaydet; //edittext ve butonumun tanımlamaları @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); preferences= PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); editor = preferences.edit(); editAdi=(EditText) findViewById(R.id.editAdi); editSoyadi=(EditText) findViewById(R.id.edtSoyadi); String adibilgisi=preferences.getString("adi", "Ad Girin"); //ad bilgisi kayıtlıysa adibilgisi değişkenine yazılacak, değilse Ad girin stringi aktarılacak. Yani varsayılan değer. String soyadiBilgisi= preferences.getString("soyadi", "Soyad girin"); //soyad bilgisi kayıtlıysa soyadibilgisi değişkenine yazılacak, değilse Soyad girin stringi aktarılacak. Yani varsayılan değer. editAdi.setText(adibilgisi); //editAdi nesnesine adibilgisini yazdırıyoruz. editSoyadi.setText(soyadiBilgisi); //editSoyadi nesnesine soyadibilgisini yazdırıyoruz. btnKaydet=(Button)findViewById(R.id.btnKaydet); //değer atamaları yapılıyor. btnKaydet.setOnClickListener(new View.OnClickListener() { //butona tıklanınca kayıt işlemi yapılacak. @Override public void onClick(View v) { // TODO Auto-generated method stub editor.putString("adi", editAdi.getText().toString()); editor.putString("soyadi", editSoyadi.getText().toString()); editor.commit(); //bilgileri ekle ve kaydet } }); } @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; } }
İyi çalışmalar.
teşekkür ederim
Teşekkürler hocam.