Android SharedPreferences – Kolay Veri Saklama

Merhaba bu yazımda sizlere SharedPreferences kullanımından bahsedeceğim. Uygulamamızda kullanıcının gireceği bazı verileri saklamak isteriz. Daha gelişmiş veriler için SQLite kullanılabilir ama daha küçük verileri çok daha hızlı yazdırıp/okuyabilmek için SharedPreferences kullanılır.

Nasıl Kullanılır?

SharedPreferences daha basit verileri saklayabilmek için kullanılır.

  • String
  • Integer
  • Float
  • Boolean
  • Long

Verileri kaydederken önce bir key(Verilecek değerin anahtarıdır. Daha sonra çağırabilmek için anahtar yani key çok önemlidir) bir value(Verilen anahtara ait değerdir. Anahtar kullanılarak get edildiğinde geri gelecek değerdir)Şimdi gelelim örneklere. Ben direkt olarak Activity’i ekliyorum. Sonra satır satır ele alalım.

import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    private EditText editName, editAge;
    private Button btnSave;

    private SharedPreferences sharedPreferences;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        registerHandlers();
    }

    private void init(){
        editName = findViewById(R.id.editName);
        editAge = findViewById(R.id.editAge);
        btnSave = findViewById(R.id.btnSave);
        sharedPreferences = this.getPreferences(Context.MODE_PRIVATE);

        editName.setText(sharedPreferences.getString("name", ""));
        int age = sharedPreferences.getInt("age", 0);
        editAge.setText(String.valueOf(age));
    }

    private void registerHandlers(){
        setBtnSaveClick();
    }

    private void setBtnSaveClick(){
        btnSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String name = editName.getText().toString();
                String stringAge = editAge.getText().toString();

                if (!name.matches("")){
                    sharedPreferences.edit().putString("name", name).apply();
                }

                if (!name.matches("")){
                    int age = Integer.parseInt(stringAge);
                    sharedPreferences.edit().putInt("age", age).apply();
                }
            }
        });
    }
}

Veri Kaydetme

SharedPreferences sharedPreferences = this.getPreferences(Context.MODE_PRIVATE);

MODE_PRIVATE seçerek gizli bir hafıza oluşturduk.

Örnek değişkenlerimizi ekleyelim.

String name = "Mehmet";
int age = 22;
float weight = 70.0f;
long size = 180L;
boolean isStudent = false;

Şimdi kullanımına bakalım.

sharedPreferences.edit().putString("name", name).apply();

sharedPreferences.edit() yazarak önce düzenlemeyi başlatıyoruz. putString diyerek önce key sonra value girerek değerimizi ekliyoruz. Son olarak apply() metodunu çağırarak işlemimizi kaydediyoruz.

Şimdi hızlıca diğerlerinin kullanımınıda görelim.

sharedPreferences.edit().putInt("age", age).apply();
sharedPreferences.edit().putFloat("weight", weight).apply();
sharedPreferences.edit().putLong("size", size).apply();
sharedPreferences.edit().putBoolean("isStudent", isStudent).apply();

Veri Okuma

Yine daha önceden belirlediğimiz değişkenlere kaydettiğimiz değerleri getirmeyi deneyelim.

name = sharedPreferences.getString("name", "default");

Veri okumak daha kolay. sharedPreferences.getString(KEY, defaultValue(Eğer kayıt yoksa getirilecek değer)) olarak çalıştırıyoruz. Default yani varsayılan kısmı uygulama ilk açılışında daha önce kayıt olmadığı için çalışır. Daha sonra kayıt eklendiğinde ise asıl kayıtlı değer getirilir.

Şimdi diğerlerinin kullanımına bakalım.

age = sharedPreferences.getInt("age", 0);
weight = sharedPreferences.getFloat("weight", 0f);
size = sharedPreferences.getLong("size", 0L);
isStudent = sharedPreferences.getBoolean("isStudent", false);

Bu yazıda android Shared Preferences kullanım amacını ve kullanımını anlattık. Soru, görüş ve önerileriniz için lütfen yorum yapmayı unutmayın. Diğer Yazılım geliştirme içeriklerimize de göz atmanızda fayda var.

Photo of author

Mehmet Kurtgöz

Android Developer.

Yorum yapın