Uygulamanızda kaydetmeyi istediğiniz veri ufak ya da başka bir deyişle küçük anahtar-değer çiftleri şeklindeyse SharedPreferences API'lerini kullanmalısınız. Bir SharedPreferences nesnesi, anahtar-değer çiftleri içeren bir dosyaya karşılık gelir ve ona basit okuma-yazma işlemleri yapabileceğiniz metotları sunar. Her SharedPreferences dosyası geliştirme çatısı (framework) tarafından yönetilir ve gizli veya ortak olabilir.
Bu eğitim içeriğinde basit değerleri saklamak ve okumak için SharedPreferences API'lerini nasıl kullanacağınızı göreceksiniz.
NOT: SharedPreferences API'leri sadece anahtar-değer çiftlerini okumak ve yazmak için kullanılır. İsim benzerliğinden dolayı onu Preference API'leriyle karıştırmamalısınız. Preference API'leriyle uygulamanızın ayar ekranı arayüzlerini oluşturursunuz.
SharedPreferences'a hâkim olmak
İsterseniz yeni bir ortak tercih dosyası (shared preference file) oluşturabilir veya var olan bir ortak tercih dosyasına şu iki metotlardan birini kullanarak erişebilirsiniz:
- getSharedPreferences(): Eğer birden fazla ortak tercih dosyasına ihtiyacınız varsa bunu kullanın. Birden fazla ortak tercih dosyasıyla çalışmak için isimlerine ihtiyacınız vardır ve bu isimleri de metodun ilk parametresinde belirleyebilirsiniz. Bu metodu uygulamanızın içindeki herhangi bir Context'ten çağırabilirsiniz.
- getPreferences(): Eğer Activity'niz için sadece bir tane ortak tercih dosyası kullanmanız gerekiyorsa bu metodu doğrudan Activity'den çağırarak kullanabilirsiniz.
Örneğin aşağıdaki kod bir Fragment içinde çalıştırılıyor. R.string.preference_file_key isminde bir string kaynağıyla belirlenmiş ortak tercih dosyasına erişiyor ve gizli modu kullanarak onu açıyor ki böylece dosya, sadece o uygulama tarafından erişilebilir oluyor:
Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE);
NOT: getActivity() metodunu Fragment içinde çağırdığınızda, içinde o Fragment'ı barındıran Activity'nin referansını almış olursunuz.
Ortak tercih dosyalarınızı isimlendirirken uygulamanız için belirlenmiş eşsiz isimler kullanmalısınız. "com.example.myapp.PREFERENCE_FILE_KEY" gibi.
Alternatif olarak, eğer Activity'niz için sadece bir ortak tercih dosyasına ihtiyacınız varsa getPreferences() metodunu da kullanabilirsiniz:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
UYARI: Eğer bir ortak tercih dosyasını MODE_WORLD_READABLE veya MODE_WORLD_WRITEABLE modlarıyla oluşturuyorsanız, dosya belirtecinin (isminin) ne olduğunu bilen herhangi başka bir uygulama verilerinize erişebilir. Bu yüzden karışık isimler koymak tercih edilir.
SharedPreferences'a yazmak
Bir ortak tercih (shared preference) dosyasına yazmak istiyorsanız, SharedPreferences nesnenizin edit() metodunu çağırarak bir SharedPreferenecs.Editor nesnesi elde etmelisiniz. Ardından yazmak istediğiniz anahtar ve değerleri putInt() ve putString() gibi uygun metotlara geçirmelisiniz. Yaptığınız değişiklikleri kaydetmek için de commit() metodunu çağırmalısınız. Örnek:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.en_yuksek_skor), yeniYuksekSkor);
editor.commit();
SharedPreferences'tan okumak
Bir ortak tercih dosyasındaki değerleri getirmek için getInt() ve getString() gibi metotları çağırmalısınız. Bunu yaparken istediğiniz değerin anahtarını ve eğer anahtar bulunmazsa döndürülecek varsayılan değeri sağlamalısınız. Örnek:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);
Bu sayfadaki parçalar Android Open Source Project kapsamında oluşturulmuş ve paylaşılmış içeriğin küçük değişiklikler yapılmış hâlidir ve Creative Commons 2.5 Attribution License'ta belirlenen koşullara göre kullanılmıştır.
Bu eğitim içeriğinin orijinal hâline buradan ulaşabilirsiniz: Saving Key-Value Sets