Shared Preferences Kullanımı :MobileCoder I MobileCoder.NET I Mobil Programlama I Android Programlama I Mobil Geliştiricilerin Buluşma Noktası I www.MobileCoder.Net

Shared Preferences Kullanımı

04.04.2015 tarihinde Android Programlama kategorisine eklenmiş, 304 views Kişi Okumuş ve 0 Yorum Yapılmış.

Mobil uygulamalarda veri depolama her platforma göre çeşitlilik gösterir. Genelde web serviceler aracılığı ile sunucu üzerinde saklanan veriler çekilir ve uygulama içinde bunlar kullanılır. Ancak bazı küçük dosyaların ve bilgilerin cihaz üzerinde de tutulması gerekebilir. Kullanıcı adı ve şifre, kullanıcının program içinde yaptığı ayarlamalar ve bunun benzeri küçük verileri cihaz üzerinde tutup gerekli durumlarda kullanmak daha mantıklıdır.

Mobil platformlarda kullanılan SQLite gibi veri tabanı yapıları bulunsada küçük bir kaç bilgi için veri tabanı yapısı kullanmak gereksiz olabilir. Bu aşamada android bizlere Shared Preferences adında bir yapı sunuyor. SharedPreferences veri tabanına gerek duymadan uygulama içerisinden basit yapıdaki verileri saklamamızı sağlıyor. Veri tipleri şunlardır:

  • int
  • string
  • boolean
  • float
  • long

Bu verileri sizin belirlediğiniz bir “key” yardımıyla XML dosyası içinde tutuyor.

Örnek bir uygulama üzerinde nasıl olacağını görelim. Öncelikle uygulamanın paylaşılan tercihlerine erişmek ve eğer daha önceden yoksa bir xml dosyası oluşturmamız gerekir. Bunun için aşağıdaki kodu kullanabiliriz :

1

İlk parametre oluşacak dosyanın ismini, ikincisi de hangi modda olacağını belirtiyor. MODE_PRIVATE ile bu dosyanın sadece bizim uygulamamız tarafından erişilebileceğini belirttik. Bundan sonraki adım da dosyayı editlemek için erişmemiz gerekir. Aşağıdaki satır ile de bunu sağlıyoruz.2

Artık dosyaya ulaştık. Buraya yukarda da belirttiğim gibi boolean, float, int, long ve/veya string veriler yazıp/okuyabiliriz. Yazmak için put, almak için de get metodları [putString(), getBoolean()…] zaten geliyor.

Örnek uygulamamızda, uygulamanın kaç defa çalıştığını ekranda göstermek istediğimizi düşünelim. Bunun için bir sayaç oluşturalım ve bu değeri paylaşılan tercihlerden okuyalım. Daha sonra da bir textView ile ekranda gösterelim.3

mCounter değişkenimize xmlFile içindeki “counter” isimli anahtarın değerini atıyoruz. getInt()[ve diğer getXXX] metodlarının aldığı ikinci parametre de default değer. Yani xml dosyası ortada yoksa ya da herhangi bir şekilde oradaki değeri alamazsak, default değerimiz geri dönüyor. Ayrıca dosyadan değer okumak için bir önceki satırdaki gibi editör oluşturmaya gerek yoktu. Editörü dosyaya yazmak için kullanacağız. Satırlar yer değişse ya da ikinci satır aradan çıksa da uygulama şimdilik çalışır.

Uygulamanın daha önce kaç defa çalıştırıldığını görmek için de aşağıdaki kodu yazıyoruz. Daha önceden main.xml içinde tanımladığımız textView nesnesinin text özelliğini, sayacımızın değeri ile güncelliyoruz.4

Uygulamamızı şimdi çalıştırırsak aşağıdakine benzer bir görüntü elde etmiş olmamız lazım.eg1

main.xml de aşağıdaki gibi ;5

Sayfamız görüntülendiğine göre artık uygulamamız bir defa daha çalışmış oldu. Demek ki artık sayacı artırmamız gerekecek. Bunun için de aşağıdaki satırları yazalım.6

 

 

 

Uygulamayı bu haliyle çalıştırdığımızda yine ilk ekran görüntüsü gelecek. Yeni halini ilk defa çalıştırmış oluyoruz çünkü. Tekrar çalıştırdığımızda aşağıdaki,

eg2

üç defa daha çalıştırdıktan sonra da aşağıdaki görüntüye benzer şeyler görünmesi lazım.eg3

Uygulamanın class kodu da aşağıdaki gibi :7

Uygulamada tek activity olduğu için pek bir yararını göremedik ama uygulamamızın içindeki tüm classlardan bu özelliklere erişip / değişiklik yapabileceğimizi bilmemiz belki getirdiği kolaylığı farketmemizi sağlayabilir. Üstelik ram gibi program boyunca kalıp tekrar başlatıldığında da kaybolmuyor. Uygulama cihazda bulunduğu sürece değerler korunuyor.

Başka bir örnek daha yapalım :

public class MainActivity extends Activity {SharedPreferences SP;SharedPreferences.Editor SPE;private Button buton;private Switch wifi;private Switch sessiz;private String wifiDurum;

private String SessizDurum;

private TextView WifiTxt;

private TextView SessizTxt;

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

 

buton = (Button) findViewById(R.id.button1);

wifi = (Switch) findViewById(R.id.switch1);

sessiz = (Switch) findViewById(R.id.switch2);

WifiTxt = (TextView) findViewById(R.id.textView3);

SessizTxt = (TextView) findViewById(R.id.textView4);

 

//Dosyaya bir isim veriyoruz ve modunu private yapıyoruz.

//Bu dosyaya sadece bizim uygulamamız erişebilecek.

 

SP = getSharedPreferences(“SettingsXML”, MODE_PRIVATE);

 

wifi.setChecked(true);

sessiz.setChecked(true);

 

wifi.setOnCheckedChangeListener(new OnCheckedChangeListener() {

 

@Override

public void onCheckedChanged(CompoundButton buttonView,

boolean isChecked) {

if(isChecked){

wifiDurum = “On”;

}else{

wifiDurum = “Off”;

}

}

});

 

sessiz.setOnCheckedChangeListener(new OnCheckedChangeListener() {

 

@Override

public void onCheckedChanged(CompoundButton buttonView,

boolean isChecked) {

if(isChecked){

SessizDurum = “On”;

}else{

SessizDurum = “Off”;

}

}

});

 

//butona tıklandığında gerekli ayarları XML dosyasına kaydedecek

//ve textView leri XML içinde tutulan verilere göre güncelleyecek.

 

buton.setOnClickListener(new View.OnClickListener() {

 

public void onClick(View v) {

SPE = SP.edit();

 

//putString(key,value) şeklinde gönderilir.

 

SPE.putString(“wifi”, wifiDurum);

SPE.putString(“sessiz”, SessizDurum);

 

//commit etmezsek kayıt edilmeyecektir.

 

SPE.commit();

 

//getString (key,defaultValue) şeklinde çekilir.

 

WifiTxt.setText(SP.getString(“wifi”, “default value”));

SessizTxt.setText(SP.getString(“sessiz”, “default value”));

}

});

}

 

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

Uygulamayı çalıştırdığımızda karşımıza iki adet switch buton gelecek. BirisiWi-Fi, diğeride Sessiz durumunu kaydedecek XML dosyamıza. Aynı anda XML içine kaydetmiş olduğu durumları dosyanın içinden çekerek TextView larda göstereceğiz. Şu şekilde;

eg4      eg5

XML dosyasının yapısı da şu şekildedir :

<?xml version=’1.0′ encoding=’utf-8′ standalone=’yes’ ?><map><string name=”sessiz”>Off</string><string name=”wifi”>On</string></map>

 

İkbal YAYLAK

 

Kaynaklar

http://melihmucuk.com/

http://adembilgen.com/index.php/android-sharedpreferences-kullanimi/

http://www.oguzozkeroglu.com/android-shared-preferences/

İlgili Terimler :
Yazar Hakkında

Yazar : Kadriye Kundakci

Yazar Hakkında :

Yazarın Tüm Yazıları İçin Tıklayınız

Yorumlar

Sitemizde En Çok Okunan İçerikler

ANDROİD TELEFONLARA ROOT ATMA
ANDROİD TELEFONLARA ROOT ATMARoot Ne demek ? Bir android cihazı root etmek telefonun
fragment
ANDROİD FRAGMENT YAPISI VE KULLANIMIFragmentler Activity içerisinde yer alan kullanıcı ara yüzleridir. Fragment
Asp.NET’de web servis hazırlama ve Android de kullanimi  Web Servis Nedir ? Web üzerinden HTTP protokolü ile hizmet
ANDROİD TELEFONLARDA KONFERANS GÖRÜŞME
ANDROİD TELEFONLARDA KONFERANS GÖRÜŞMEANDROİD TELEFONLARDA KONFERANS GÖRÜŞME   Konferans görüşme çok fazla bilinmeyen androidin

Sitemizde En Çok Yorumlanan İçerikler

Rating Bar Kullanımı
Rating Bar KullanımıAndroid’de yıldız şeklinde derecelendirme çubuğu olarak kullanılır. Kullanıcı sürükleme
Android Wear Emülatör Kurulumu
Android Wear Emülatör Kurulumu   Android studio da geliştireceğimiz uygulamaların kontrolunü yapmak için emülatör
Resim Galerisi Oluşturma
Resim Galerisi OluşturmaAndroid Programlama – Resim Galerisi Oluşturma Bu yazıda, bir galeri
SQLite Database Browser Kullanımı
SQLite Database Browser KullanımıSQLite Database Browser Kullanımı Merhaba arkadaşlar, Android uygulamaları geliştirirken uygulama üzerindeki

Son Yapılan Yorumlar

  • Kategoriler

  • Son Yazılar

  • Takvim

    Ekim 2017
    P S Ç P C C P
    « Kas    
     1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031  
  • Etiketler

  • Son Yorumlar

    • Arşivler

    • Meta