Android Studio ile SharedPreferences Kullanımı

Merhabalar,

Bugün SharedPreferences’den bahsedeceğim,

SharedPreferences  Android platformunda, basit verileri ve ayarları tutmamıza yarayan bir yapıdır.

Masaüstü veya Web uygulamalarında ayarlarımızı ya veritabanlarımızda tablolarımızda tutarız daha önemsiz basit ayarları ini dosyalarında saklarız. Çünkü boyutları küçük veri yazık okuması kolaydır.

Bildiğiniz üzere Android sayafamı ziyaret ederek Android’te işler Nasıl Yürüyor yazısını sizlere paylaştık.Dilerseniz sizlerde yazıyı ziyaret ederek Android’te işler Nasıl Yürüyor bilgi edinebilirsiniz.

 

Android platformunda da sql kullanılabilir ama bir kaç basit ayar için sql zahmetli iştir.

Nerelerde kullanılabilir ? Örneğin,  Login ekranı yaptınız ve beni hatırla CheckBoxu koydunuz, kişi CheckBox’a tıklayınca , kullanıcı adını SharedPreferences  ile kolayca saklayabilirsiniz böylece uygulama açılırken kolayca buradan okuyabilirsiniz.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.

SharedPreferences ile Int, Boolean, Float, Long, String değişkenleri tutabilirsiniz.

 

 

MainActivity.java

package com.example.myshare;

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.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    CheckBox chk1;
    EditText etIsim;

    Button btnSave, btnDelete, btnRemove, btnGo;
    String text;
    Context context = this;
    SharedPreferenc sharedPreferenc;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        btnSave.setOnClickListener(this);
        btnDelete.setOnClickListener(this);
        btnRemove.setOnClickListener(this);
        btnGo.setOnClickListener(this);


    }

    public void init() {
        chk1 = (CheckBox) findViewById(R.id.chk1);
        etIsim = (EditText) findViewById(R.id.etIsim);
        btnSave = (Button) findViewById(R.id.btnSave);
        btnDelete = (Button) findViewById(R.id.btnDelete);
        btnRemove = (Button) findViewById(R.id.btnRemove);
        btnGo = (Button) findViewById(R.id.btnGo);
        sharedPreferenc = new SharedPreferenc();
    }


    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btnSave:
                if (chk1.isChecked()) {
                    text = etIsim.getText().toString();
                    sharedPreferenc.save(context, text);
                    Toast.makeText(context, "Kaydedildi", Toast.LENGTH_SHORT).show();
                }
                break;


            case R.id.btnDelete:
                sharedPreferenc.clear(context);
                Toast.makeText(context, "Silindi", Toast.LENGTH_SHORT).show();


            case R.id.btnRemove:
                sharedPreferenc.remove(context);
                Toast.makeText(context, "Kaldırıldı", Toast.LENGTH_SHORT).show();

            case R.id.btnGo:
                Intent intent = new Intent(context, SecondActivity.class);
                startActivity(intent);


        }


    }
}

 

 

activity_main.xml

<?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=".MainActivity">

    <CheckBox
        android:id="@+id/chk1"
        android:layout_width="133dp"
        android:layout_height="28dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:text="CheckBox"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.053"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.071" />

    <EditText
        android:id="@+id/etIsim"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:ems="10"
        android:inputType="textMultiLine"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.032"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.147" />

    <Button
        android:id="@+id/btnSave"
        android:layout_width="107dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:text="KAYDET"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.057"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.246" />

    <Button
        android:id="@+id/btnDelete"
        android:layout_width="107dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:text="SİL"
        app:layout_constraintBottom_toTopOf="@+id/btnGo"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.065"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/etIsim"
        app:layout_constraintVertical_bias="0.426" />

    <Button
        android:id="@+id/btnRemove"
        android:layout_width="109dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:text="KALDIR"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.066"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.499" />

    <Button
        android:id="@+id/btnGo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:text="2. AKTİVİTEYE GİT"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.074"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.632" />

</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 SecondActivity.java ve activity_main2.xml dosyasını aşağıdaki gibi düzenliyoruz.

 

SecondActivity.java

package com.example.myshare;


import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

public class SecondActivity extends AppCompatActivity {
    TextView text;
    SharedPreferenc sharedPreferenc;
    Context context = this;
    String donenDeger;

    protected void onCreate(@Nullable Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.secondactivity);
        text = (TextView) findViewById(R.id.text);
        sharedPreferenc = new SharedPreferenc();
        donenDeger = sharedPreferenc.getValue(context);
        text.setText(donenDeger);

    }
}

 

 

secondactivity.xml

 

<?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">

    <TextView
        android:id="@+id/text"
        android:layout_width="145dp"
        android:layout_height="70dp"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="8dp"
        android:text="TextView"
        android:textSize="24sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.499" />


</android.support.constraint.ConstraintLayout>

SharedPrefernc.java

package com.example.myshare;

import android.content.Context;
import android.content.SharedPreferences;

public class SharedPreferenc {

    static  final String PREF_NAME="DOSYA";
    static final String PREF_KEY="KEY";

    public void save(Context context, String text){

        //Bir tane Key kullanıdığımızı düşünerek bir yerde kullanıldı.Eğer birde fazla kullanılacaksa save metoduna parametre olarka girilmesi gerekmektedir.
        SharedPreferences settings =context.getSharedPreferences(PREF_NAME,Context.MODE_PRIVATE);
        // .MODE_PRIVATE ile uygulamamıza dışardan erişilmesini engelliyoruz.
        //getPreferences sınıfı sadece bulunduğu aktivite kullanır
        //getSharedPreferences sınıfı ie diğer aktivitelerden vey servislerden erişim sağlayabilir.
        SharedPreferences.Editor editor=settings.edit();
        // SharedPreferences.Editor ise verilerin eklemenmesini hatta .Xml dosyasınına kaydeilmesi bu editör sağlıyor.
        editor.putString(PREF_KEY,text);
        editor.commit();


    }

    //Kaydedilen değeri elde etme (geri alma) methodu
    public String getValue(Context context){
        SharedPreferences settings =context.getSharedPreferences(PREF_NAME,Context.MODE_PRIVATE);
        String text=settings.getString(PREF_KEY,null);
        return text;
    }

    //SharedPreferences da kaydedilen değerleri silme methodu
    public void clear (Context context){
        SharedPreferences settings =context.getSharedPreferences(PREF_NAME,Context.MODE_PRIVATE);
        SharedPreferences.Editor editor=settings.edit();
        editor.clear();
        editor.commit();

    }
    // O nesneyi kaldırmak için kullanılan method
    public void remove (Context context){
        SharedPreferences settings =context.getSharedPreferences(PREF_NAME,Context.MODE_PRIVATE);
        SharedPreferences.Editor editor=settings.edit();
        editor.remove(PREF_KEY);
        editor.commit();

    }
}

 

                                                                                           

 

 

 

 

 

Android mini uygulama da ChecBox seçip Kaydet butonuna basıldığında  TextView ‘ e girilen text kaydediliyor. 2.Aktiviteye git tuşuna basıldığında ise SecondActivity açılır ve texte girilen değer bu sayfada gözükür.Eğer Sil ve kaldır butonlarına basıldığında ise Textview ‘ e girilen text silinir ve 2.Aktiviteye git tuşuna basıldığında ise SecondActivity açılır silindiğinden ikinci sayfada hiçbir değer gözükmez.

 

 

 

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.

Başka bir Android projemizde görüşmek dileğiyle…

 

 

 

 

 

 

 

 

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir