Android Programlama

Android SharedPrefences ile Veri Kaydetme

Android programlamada veri kaydetmek birçok projemizde kullanmamız gereken bir durumdur. Developerlar için 3 çeşit veri kaydetme seçeneği sunulmuştur.

  • SharedPefences
  • Dosya işlemleri
  • Veri Tabanı (SQLite)

Biz bu makalemizde SharedPrefencesler ile veri kaydetmeyi göreceğiz. İlk önce yeni bir proje açıyorum. Bu projemde 1 edittext, 2 buton ve 1 adet de textview olacak. veritabanı gibi herhangi bir işleme girmeden edittext’ten alacağımız veriyi butonların yardımıyla textview’de göstereceğim.

İlk başta yapacağımız iş bir SharedPrefences ve dosya tanımlamak olacak. Dosya aslında var olmayacak ancak veri aktarımında dosyadan faydalanacağız. Bunu

public static String dosyaadi = "deneme";
SharedPreferences sharedVeri;

kodlarıyla onCreate metodunun hemen altına yazıyoruz. Ardından onCreate metodumuzun içine butonları, textview, edittext’i tanıtıyoruz. Ardından onCreate içerisine

sharedVeri = getSharedPreferences(dosyaadi, 0);

kodumuzla SharedPrefences’ı alıyoruz. Burada dosyaadi en başta oluşturduğumuz dosya, “0” ise default mode’u yani MODE_PRIVATE modunu temsil ediyor.Diğer modlar ise MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE, MODE_MULTI_PROCESS'dir.

Bunlara daha sonra değineceğim. Uygulamamıza geri dönüyoruz. Kaydet butonumuzun onClick() metoduna

String alinanveri = etVeri.getText().toString();
SharedPreferences.Editor editor = sharedVeri.edit();
editor.putString("key", alinanveri);
editor.commit();

kodlarını yazıyoruz. Burada bir editor oluşturup aldığımız verileri bu editör yardımıyla değiştirmemiz gerekiyor. putString yardımıyla da key-value ilişkisini kuruyoruz. Hepsi bu kadar şimdi programımızı çalıştırabiliriz.

Artık programımızı çalıştırabiliriz. İlk başta gelen ekranda edittext’e deneme yazıyorum.

SharedPrefences

Daha sonra kaydet ve veriyi al diyorum ve textview’e SharedPrefences yardımıyla veriyi aktarmış oluyorum.

SharedPrefences-2

Xml ve Java kodlarımızı aşağıya ekliyorum. Herkese kolay gelsin.

activity_shared.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".SharedActivity" >
<TextView
android:id="@+id/tvGoster"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/bVeri"
android:layout_below="@+id/bVeri"
android:text="TextView" />
<EditText
android:id="@+id/etShared"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:ems="10" >
</EditText>
<Button
android:id="@+id/bKaydet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/etShared"
android:layout_below="@+id/etShared"
android:text="Kaydet" />
<Button
android:id="@+id/bVeri"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/bKaydet"
android:layout_below="@+id/bKaydet"
android:text="Veriyi al" />
</RelativeLayout>

SharedActivity.java

package com.ornek.sharedpref;
import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class SharedActivity extends Activity implements OnClickListener{
EditText etVeri;
TextView goster;
Button kaydet,verial;
public static String dosyaadi = "deneme";
SharedPreferences sharedVeri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shared);
sharedVeri = getSharedPreferences(dosyaadi, 0);
kaydet = (Button)findViewById(R.id.bKaydet);
verial = (Button)findViewById(R.id.bVeri);
goster = (TextView)findViewById(R.id.tvGoster);
etVeri = (EditText)findViewById(R.id.etShared);
kaydet.setOnClickListener(this);
verial.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.bKaydet:
String alinanveri = etVeri.getText().toString();
SharedPreferences.Editor editor = sharedVeri.edit();
editor.putString("key", alinanveri);
editor.commit();
break;
case R.id.bVeri:
sharedVeri = getSharedPreferences(dosyaadi, 0);
String geridonenveri = sharedVeri.getString("key", "yükleme basarisiz");
goster.setText(geridonenveri);
break;
}
}
}