kodbankasi http://kodbankasi.org/kodbankasi

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;
}
}
}

Bir önceki yazımız olan Android Spinner kullanımı başlıklı yazımızı da inceleyebilirsiniz.

14 Yorumlar

  1. Bu konuyu hiç anlayamamıştım. Şimdi yaptım çalışıyor :)

  2. Yeni başlayanlar için çok güzel yazılar mevcut.

    Biraz da ileri düzey android webservis, internetten resim yazı çekme ya da ne bileyim veritabanı işlemleri gibi konuları işlerseniz çok sevinirim

    Tekrar teşekkür ediyorum böyle güzel bir site yaptığınız için.

  3. Harika yazılar. Android programlamaya sayenizde merak sardım. Baştan başladım okumaya. Çok teşekkürler siteniz harika !

  4. Küçük bir sıkıntım vardı sharedprefences veri aktarımı ile ilgili. Admin arkadaş sağolsun iletişim bölümünden attığım maile dönüş yaptı ve sorunumu halletti.

    Tekrardan Yasin Bey’e teşekkür etmek istedim.

  5. Android devam yazıları ne zaman gelecek ?

    Özellikle sqlite, webservis, tasarım yazıları paylaşırsanız çok sevineceğim. Yazı stilinizi çok beğeniyorum. İnşallah devam edersiniz.

  6. gelistiriciahmet

    Hocam ben her dafasında yazdığım kodu çalıştırdığımda farklı bir hata alıyorum nedendir sizce hata aynı olsa sorun yok ama her defasında farklı.

  7. Merhaba;

    Ben birkaç adet background’u bulunan hesap makinesi yaptım, haliyle kapatıp açınca bilgiler sıfırlanıyor ve ilk activity(background)’e dönüyor. Kaydet-veriyi al butonları olmadan otomatik olarak nasıl kayıt yapabilirim. Mesela googleplayde indirdiğim çoğu hesap makinesi uygulamaları gibi yapmak istiyorum. Teşekkürler..

  8. Admin herkese cevap vermiş fakat bizi sallamamış.

  9. Önemli konu teşekkürler

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak.

Bu yazı da ilginizi çekebilir !

menu

Android Options Menü Oluşturma

Bu yazımda android programlama dilinde nasıl menü oluşturulacağını anlatacağım. Android uygulama menüleri hemen hemen her ...