Temel Kotlin SharedPreferences Eğitimi

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()
        }

    }
}

 

 

Yorum Yap