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