Erkan KESER

SharedPreferences ile Local Kayıt - Java ile Android Studio

Android studio ve java kullanılarak SharedPreferences ile local kayıt nasıl yapılır.

Mobil uygulama geliştirme ortamında  basit verileri kaydetmek için sharedPreferences nesnesi kullanılabilir. Bilgiler Cihaz yerelinde tutulur. 

sharedPreferences ile <ANAHTAR> = <DEĞER> türünde kayıtlar yapılır. 

 sharedPreferences  nesnesi iki şekilde kullanılır. 

Birden fazla dosya kullanılacaksa getSharedPreferences() ile çağrılır, sadece basit bir veri saklanacaksa getPreferences() ile kullanılmalıdır. 

1.Kullanım Örneği:

sharedPreferences sp=this.getSharedPreferences("menu1.ds",Context.MODE_PRIVATE); şeklinde kullanıldığında ilk parametre olarak mutlaka bir dosya ismi girilmelidir. Bu nesne ile yapılan kayıtların hepsi belirtilen dosyaya kaydedilir.

2.Kullanım Örneği:

sharedPreferences sp=this.getPreferences(Context.MODE_PRIVATE);  şeklinde kullanılırsa tüm kayıtlar ortak olarak bir dosyaya kaydedilir.

İki şekilde oluşturulan nesnelerin türü aynı, sadece çağrılma şekilleri farklıdır. SharedPreferences nesnesi oluşturulduktan sonra bir tane de Editor nesnesi oluşturulmalıdır. Editor nesnesi,verilerin alınarak kaydedilmesini sağlar.

Editör Nesnesine Veri Ekleme Örneği:

sharedPreferences.Editor editor=sharedPreferences.edit();
String veri="Herhangi bir veri";
editor.putString("bilgi", veri);
editor.apply();

Editor Nesnesi Veri Ekleme Metotları
putBoolean: Editor nesnesine Boolean türünde veri ayarlar.
putInt: Editor nesnesine Int türünde veri ayarlar.
putLong: Editor nesnesine Long türünde veri ayarlar.
putString: Editor nesnesine String türünde veri ayarlar.
putFloat: Editor nesnesine Float türünde veri ayarlar.
clear: Tüm verileri siler.
remove: remove("anahtar") şeklinde belirtilen veriyi siler.
apply: Ayarlanan tüm verileri dosyada saklar.

 Veri okumak için String gelenveri=sharedPreferences.getString("anahtar","deger"); kullanıllır.

Editor Nesnesi Veri Okuma Metotları
getBoolean: Saklanan verilerden Boolean verisi alır.
getInt: Saklanan verilerden Ant verisi alır.
getLong: Saklanan verilerden Long verisi alır.
getString: Saklanan verilerden String verisi alır.
getFloat: Saklanan verilerden Float verisi alır.
getAll: Tüm saklanan verileri alır.
contains: Saklanan verilerde belirtilen anahtarın olup olmadığını kontrol eder.

Örnek Uygulama

Açıklama: Tasarıma EditText ve Buton ekleyiniz. EditText'ten şehir bilgisi girilecek buton ile kaydet işlemi yapıldığında uygulama sharedPreferans nesnesi ile uygulama içinde local de saklanacak.

main.xml Dosyası

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/main"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   android:padding="20dp"
   tools:context=".MainActivity">
   <EditText
       android:id="@+id/etSehir"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:ems="10"
       android:inputType="text"
       android:text="Name" />
   <Button
       android:id="@+id/btnSehirKaydet"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="Kaydet" />
</LinearLayout>

Main.Java Dosyası

public class MainActivity extends AppCompatActivity {
   Button  btnSehirEkle; EditText  etSehir; 
   SharedPreferences sp;
   SharedPreferences.Editor editor;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       EdgeToEdge.enable(this);
       setContentView(R.layout.activity_main);
       ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
           Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
           v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
           return insets;
       });
       etSehir = findViewById(R.id.etSehir);
       btnSehirEkle = findViewById(R.id.btnSehirKaydet);

       sp = getSharedPreferences("UygulamaVerisi", Context.MODE_PRIVATE);
       String gelenveri = sp.getString("sehir","");
       if(!gelenveri.isEmpty()){
           etSehir.setText(gelenveri);
       }
       btnSehirEkle.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               String sehirAdi = etSehir.getText().toString();
               editor = sp.edit();
               editor.putString("sehir", sehirAdi);
               editor.apply();
           }
       });
   } // oncreate
}//main