Android Studio ile SharedPreferences Kullanımı

Uygulamalarımız içinde küçük verileri kayıt etmek için veritabanı oluşturmak yerine kullanımı daha pratik olan SharedPreferences kullanabiliriz ama büyük veriler için kullanımı uygun değildir. Basit bir uygulama yaparak SharedPreferences ile nasıl veri ekleme, güncelleme, silme işlemelerini yapabileceğimize bakalım.
Uygulamamızın genel mantığı kullanıcı ilk sayfada ismini yazcak ve diğer sayfada ismini göstereceğiz. İsteğe bağlı olarak isimini silebilecek veya güncelleyebilecek. İsim silindiğinde uygulama tekrardan açılırsa tekrardan ismini soracak eğer isim silinmemiş ise direk olarak ikinci sayfa çalışacak şekilde ayarlamalarımızı yapıyoruz.
İlk olarak bir proje oluşturuyoruz MainActivity.java sınıfını ve activity_main.xml dosyamızı aşağıdaki gibi düzenliyoruz.
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
package com.example.esatgozcu.sharedpreferenceskullanim; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity { EditText editText; Button nextButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText=(EditText)findViewById(R.id.editText); nextButton=(Button)findViewById(R.id.nextButton); // SharedPreferences nesnemizi oluşturuyoruz. // İlk parametre package name giriyoruz. SharedPreferences sharedPreferences = this.getSharedPreferences("com.example.esatgozcu.sharedpreferenceskullanim", Context.MODE_PRIVATE); /* sharedPreferences.getBoolean(anahtar kelime , varsayılan değer) */ // Eğer kullanıcı daha önce giriş yaptı ise diğer sayfaya geçiş yapacak if (sharedPreferences.getBoolean("first",false)) { // Diğer sayfaya geçiş yapıyoruz Intent intent = new Intent(getApplicationContext(),Main2Activity.class); startActivity(intent); } } // İleri butonuna tıkladığımızda public void next(View view) { SharedPreferences sharedPreferences = this.getSharedPreferences("com.example.esatgozcu.sharedpreferenceskullanim", Context.MODE_PRIVATE); // Kullanıcının ismini name değişkenine atıyoruz String name = editText.getText().toString(); /* sharedPreferences.edit().putString(anahtar kelime , kayıt edilecek veri) */ // name değişkenini kayıt ediyoruz sharedPreferences.edit().putString("userName", name).apply(); // Kullanıcı ilk girdiğinde first anahtar kelimesini true yapıyoruz. sharedPreferences.edit().putBoolean("first", true).apply(); // Diğer sayfaya geçiş yapıyoruz Intent intent = new Intent(getApplicationContext(),Main2Activity.class); startActivity(intent); } } |
activity_main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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="com.example.esatgozcu.sharedpreferenceskullanim.MainActivity" tools:layout_editor_absoluteY="81dp"> <EditText android:id="@+id/editText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="192dp" android:ems="10" android:hint="İsim" android:inputType="textPersonName" <Button android:id="@+id/nextButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="48dp" android:onClick="next" android:text="İLERİ" android:textSize="14sp" </android.support.constraint.ConstraintLayout> |
Uygulama ilk açıldığınıda kullanıcı adını SharedPreferences kullanarak kayıt ettik ve diğer sayfaya geçiş yapıyoruz. Diğer sayfanın Main2Activity.java ve activity_main2.xml dosyasını aşağıdaki gibi düzenliyoruz.
Main2Activity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
package com.example.esatgozcu.sharedpreferenceskullanim; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class Main2Activity extends AppCompatActivity { TextView textView; Button deleteButton; Button changeButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); textView = (TextView)findViewById(R.id.textView); deleteButton = (Button)findViewById(R.id.deleteButton); changeButton = (Button)findViewById(R.id.changeButton); SharedPreferences sharedPreferences = this.getSharedPreferences("com.example.esatgozcu.sharedpreferenceskullanim", Context.MODE_PRIVATE); // Giriş yapan kullanıcını isimini yazdırıyoruz String name = sharedPreferences.getString("userName","name"); textView.setText(name); } // Sil butonuna tıklayınca public void delete(View view) { SharedPreferences sharedPreferences = this.getSharedPreferences("com.example.esatgozcu.sharedpreferenceskullanim", Context.MODE_PRIVATE); // Değişkeni siliyoruz sharedPreferences.edit().remove("userName").apply(); // Tekrardan isim girilmesi için false yapıyoruz sharedPreferences.edit().putBoolean("first", false).apply(); textView.setText("Name"); } // Değiştir butonuna tıklayınca public void change(View view) { SharedPreferences sharedPreferences = this.getSharedPreferences("com.example.esatgozcu.sharedpreferenceskullanim", Context.MODE_PRIVATE); // Tekrardan isim girilmesi için false yapıyoruz sharedPreferences.edit().putBoolean("first", false).apply(); /* Verileri değiştirirken verinin tekrardan üstüne yazıyoruz */ // Diğer sayfaya geçiş yapıyoruz Intent intent = new Intent(getApplicationContext(),MainActivity.class); startActivity(intent); } } |
activty_main2.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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="com.example.esatgozcu.sharedpreferenceskullanim.Main2Activity" tools:layout_editor_absoluteY="81dp"> <TextView android:id="@+id/textView" android:layout_width="300dp" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:text="isim" android:textAlignment="center" android:textSize="24sp"/> <Button android:id="@+id/changeButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="30dp" android:onClick="change" android:text="Değiştir"/> <Button android:id="@+id/deleteButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:onClick="delete" android:text="Sil"/> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="39dp" android:layout_marginTop="50dp" android:text="Kullanıcı" android:textColor="@android:color/black" android:textSize="30sp" /> </android.support.constraint.ConstraintLayout> |
SharedPreferences kullanarak veriyi güncellemek için mevcut verinin üstüne yazdığımıza dikkat edelim yani direk olarak veri güncelleme olarak özel bir yapı mevcut değildir.
Projenin kaynak kodlarını buraya tıklayarak indirebilirsiniz.