Andoridde Bilgi Saklama ve SharedPreferences
SharedPreferences Kullanımı
SharedPreferences, uygulamanın verilerini saklamak ve okumak için kullanılan bir yöntemdir. Bu veriler, uygulama kapatılsa dahi hafızada saklanır.
Mesela basit bir oyun uygulamasında maksimum skoru saklamak için kullanılır.
Basit işler için uygundur, daha kapsamlı ve karmaşık şeyler için veri tabanı kullanılır.
Örneğin daha sonra değer atayacağımız bir sharedPreferences değişkeni oluşturarak başlaylaım.
lateinit var sharedPreferences: SharedPreferences
Ardından onCreate fonksiyonunda sharedPreferences'i initialize ediyoruz.
onCreate fonksiyonu içinde initilize etmek önemli çünkü eğer önceden elimizde veri varsa program başlar başlamaz gözükmeli.
sharedPreferences = this.getSharedPreferences("com.example.sharedpreferences",MODE_PRIVATE)
Mode_private ile sadece bu uygulama için erişilebilir hale getiriyoruz. Eğer bu uygulamadaki veriler başka bir uygulamada kullanılacak olsaydı MODE_WORLD_READABLE kullanılırdı.
%99 private kullanılır.
Şimdi aşağıdaki resimde bulunan uygulamanın kodunu yazalım.

Kaydet Butonu
İlk olarak kaydet butonumuzun onClick özelliğini kaydet butonuna bağlıyoruz.
fun kaydet (view: View){
val kullaniciGirdisi = binding.editText.text.toString()
if (kullaniciGirdisi == ""){
Toast.makeText( this@MainActivity,"İsim boş olamaz",Toast.LENGTH_SHORT).show()
}else{
sharedPreferences.edit().putString("isim", kullaniciGirdisi).apply()
binding.textView.text="Kaydedilen İsim: {kullaniciGirdisi}" //Süslü parantezden önce $ işareti olmalıdır.
}
}

Görüleceği üzere isim girilmediğinde Toast mesajı görüntülenir ve "İsim boş olamaz" yazısı görüntülenir.

Görüleceği üzere isim girildiğinde textView'de "Kaydedilen İsim: {kullaniciGirdisi}" yazısı görüntülenir.
Şimdi bu kayıt gerçekten sharedPreferences'de saklanıyor mu kontrol edelim, uygulamayı kapatıp tekrar açalım.

Görüleceği üzere hafızada isim var olduğu için "Kaydedilen İsim: Bilocan" yazısı görüntülenir.
Silme Butonu
Şimdi silme butonumuzun kodunu yazacağız, ondan önce onCreate fonksiyonunda bir değişken oluşturacağız.
alinanKullaniciAdi = sharedPreferences.getString("isim","")
if(alinanKullaniciAdi==""){
binding.textView.text= "Daha önce girilen bir isim yok."
}else{
binding.textView.text = "Kaydedilen İsim: {alinanKullaniciAdi}"//Süslü parantezden önce $ işareti olmalıdır.
}
Bu kodda sharedPreferences'deki isim değişkenini alıyoruz ve eğer boş ise "Daha önce girilen bir isim yok." yazısı görüntülenir, eğer dolu ise "Kaydedilen İsim: {alinanKullaniciAdi}" yazısı görüntülenir.
getString fonksiyonu ile sharedPreferences'deki isim değişkenini alıyoruz. "isim" değişkeni aynı olmalı dikkat et, ikinci parametre de default değerdir.
"isim" değişkeninde bir değer bulamaz ise defaulta bakar, defaulta "herhangi bir değer yok" yazılabilir mesela. Şimdi silme butonumuzun onClick özelliğini sil fonksiyonuna bağlıyoruz ve kodunu yazıyoruz.
fun sil (view : View){
alinanKullaniciAdi = sharedPreferences.getString("isim", "")
if (alinanKullaniciAdi != "") {
sharedPreferences.edit().remove("isim").apply()
binding.textView.text = "İsim silindi."
} else {
binding.textView.text = "Daha önce girilen bir isim yok."
}
}

Görüleceği üzere sil butonuna bastığımızda "İsim silindi." yazısı görüntülenir ve hafızadan Bilocan yazısı silinir.
Şimdi hafızada isim var mı yok mu kontrol edelim, uygulamayı kapatıp tekrar açalım.

Görüleceği üzere hafızada isim kalmadığı için "Daha önce girilen bir isim yok." yazısı görüntülenir.