Daha önce flutter için sharedpreferences kullanımı hakkında bir yazı yazmıştım. Bu yazımda ise kotlin için temel sharedpreferences kullanımını anlatacağım. SharedPreferences’ta değerleri nasıl depolayabileceğimizi ve alabileceğimizi göstereceğim. Daha iyi anlamak için örnek üzerinden göstereceğim.
SharePreferences nedir?
SharedPreferences, anahtar/değer çiftlerini kullanarak uygulama verilerini depolayan ve bunları okumak ve yazmak için basit yöntemler sağlayan bir yöntemdir.
SharePreferences’daki Modlar
MODE_APPEND: Yeni verileri mevcut verilerin üzerine kaydeder.
MODE_MULTI_PROCESS: Artık kullanılmamaktadır.
MODE_PRIVATE: Bu varsayılan moddur ve oluşturulan dosyaya yalnızca uygulamanız tarafından erişileceği anlamına gelir.
MODE_WORLD_READABLE: Uygulamada oluşturulan dosyayı okuyabilir ancak değiştiremez.
MODE_WORLD_WRITEABLE: Verilerin tutulduğu dosyayı cihazda bulunan uygulamalar okuyabilir veya değiştirebilir.
#1 edit()
SharedPreferenceste değişiklikler yapabilmek ve bu değişiklikleri geri yüklemek için Editor nesnesi oluşturur.
#2 getAll()
Tüm değerleri almak için kullanılır.
#3 getBoolean(String key, boolean defValue)
Bool değer almak için kullanılır.
#4 getFloat(String key, float defValue)
Float değer almak için kullanılır.
#5 getInt(String key, int defValue)
İnt değer almak için kullanılır.
#6 getLong(String key, long defValue)
Long değer almak için kullanılır.
#7 getString(String key, String defValue)
String değer almak için kullanılır.
#8 commit()
Editor’daki verileri dosyaya yazar ve sonuç mesajı verir. (synchronously olarak)
#10 apply()
Editor’daki verileri dosyaya yazar ve sonuç mesajı verir. (asynchronously olarak)
#11 clear()
Tüm verileri siler.
#12 remove()
Anahtar değeri girilen veriyi siler.
Verileri kaydetmek için put kullanılır.
Verilerin nasıl yazılacağına ilişkin örnek;
// Verileri SharedPreferences'ta depolama SharedPreferences sharedPreferences = getSharedPreferences("ExampleShared",MODE_PRIVATE); // Editor nesnesi oluşturma SharedPreferences.Editor myShared = sharedPreferences.edit(); myShared.putString("name", name.getText().toString()); myShared.putInt("age", Integer.parseInt(age.getText().toString())); // Değişiklikler yapıldıktan sonra yapılan değişiklikleri commit etmemiz gerekiyor yoksa hata verir. myEdit.commit();
#1 putString( key:String, value:String )
String değer kaydetmek için kullanılır.
#2 putInt(key:String, value:Int )
İnt değer kaydetmek için kullanılır.
Örnek Uygulama:
Adım 1: Tasarım
<?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:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/txt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:padding="10dp" android:textColor="#101010" android:textSize="25sp"/> <EditText android:id="@+id/edt" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/enter_a_text" android:layout_margin="10dp" android:textColor="#101010"/> <Button android:id="@+id/save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/save" android:layout_margin="10dp"/> <Button android:id="@+id/show" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/show" android:layout_margin="10dp"/> </LinearLayout>
Adım 2: Kod
MainActivity.kt
package arb.test.shared.perferences import android.content.Context import android.content.SharedPreferences import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Toast import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { lateinit var shared : SharedPreferences override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) shared = getSharedPreferences("Test" , Context.MODE_PRIVATE) save.setOnClickListener { val edit = shared.edit() edit.putString("txt" , edt.text.toString()) Toast.makeText(this , "successfully saved" , Toast.LENGTH_SHORT).show() edit.apply() } show.setOnClickListener { txt.text = shared.getString("txt" , "No imported" ) Toast.makeText(this , shared.getString("txt" , "No imported" ) , Toast.LENGTH_SHORT).show() } } }