Sonuç bulunamadı
Bütün Sonuçları Göster
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net
  • Haber
  • Yapay Zeka
  • Tavsiyeler
  • Oyun
  • Video
  • Teknoloji
    • Mobil
    • Yazılım
    • Elektronik Alışveriş Fırsatları
    • Pratik
    • Ev Teknolojileri
    • Makale
    • Güvenlik
    • Ekonomi
    • İnternet
    • Giyilebilir Teknoloji
    • Sağlık
    • Yazıcı
    • Sosyal Medya
    • Otomobil
      • Elektrikli Otomobil
  • Sosyal
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net
  • Haber
  • Yapay Zeka
  • Tavsiyeler
  • Oyun
  • Video
  • Teknoloji
    • Mobil
    • Yazılım
    • Elektronik Alışveriş Fırsatları
    • Pratik
    • Ev Teknolojileri
    • Makale
    • Güvenlik
    • Ekonomi
    • İnternet
    • Giyilebilir Teknoloji
    • Sağlık
    • Yazıcı
    • Sosyal Medya
    • Otomobil
      • Elektrikli Otomobil
  • Sosyal
Sonuç bulunamadı
Bütün Sonuçları Göster
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net

Anasayfa - Makale - Pratik - Android Programlama Ders 36: Preferences Kullanarak Verileri Kaydediyoruz

Android Programlama Ders 36: Preferences Kullanarak Verileri Kaydediyoruz

26 Nisan 2014 - 12:00
- Mobil, Pratik

Android Programlama Ders 36‘da örnek projeyi kullanarak verileri kaydetmeyi öğreneceğiz.

Android işletim sisteminde verileri depolamak için birkaç farklı yöntem mevcuttur.

Preferences – Windows‘ta olan INI dosyalarına benzetebiliriz.

SQLite – veri tabanı ve tablolar.

Normal dosyalar – içerideki ve dışarıdaki (SD kart) üzerinde olan dosyalar.

Biz en basit (Preferences) olandan başlayacağız. Preferences üzerinde değerler çift (isim ve değer) olarak kaydediliyor, Intent’e  extras gibi. Bir proje oluşturalım. Projede bir tane giriş alanı ve iki tane buton olacak. Birincisi Save (kaydet) ve ikincisi de Load (yükle) olarak belirlenecek.

Projeyi oluşturalım:

  • Project name: P0036_SharedPreferences
  • Build Target: Android 4.2
  • Application name: SharedPreferences
  • Package name: tr.example. sharedpreferences
  • Create Activity: MainActivity

 

Main.xml’i açalım ve ekranı oluşturalım:

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical">
 <EditText
  android:id="@+id/etText"
  android:layout_width="match_parent"
  android:layout_height="wrap_content">
 <requestFocus>
 </requestFocus>
 </EditText>
 <LinearLayout
  android:id="@+id/linearLayout1"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="horizontal">
 <Button
  android:id="@+id/btnSave"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="Save">
 </Button>
 <Button
  android:id="@+id/btnLoad"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="Load">
 </Button>
 </LinearLayout>
 </LinearLayout>

Giriş alanı ve iki tane butonu içeriyor.

MainActivity.java oluşturalım:

import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

  EditText etText;
  Button btnSave, btnLoad;

  SharedPreferences sPref;

  final String SAVED_TEXT = "saved_text";

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        etText = (EditText) findViewById(R.id.etText);

        btnSave = (Button) findViewById(R.id.btnSave);
        btnSave.setOnClickListener(this);

        btnLoad = (Button) findViewById(R.id.btnLoad);
        btnLoad.setOnClickListener(this);
    }

  @Override
  public void onClick(View v) {
    switch (v.getId()) {
    case R.id.btnSave:
      saveText();
      break;
    case R.id.btnLoad:
      loadText();
      break;
    default:
      break;
    }
  }

  void saveText() {
    sPref = getPreferences(MODE_PRIVATE);
    Editor ed = sPref.edit();
    ed.putString(SAVED_TEXT, etText.getText().toString());
    ed.commit();
    Toast.makeText(this, "Text saved", Toast.LENGTH_SHORT).show();
  }

  void loadText() {
    sPref = getPreferences(MODE_PRIVATE);
    String savedText = sPref.getString(SAVED_TEXT, "");
    etText.setText(savedText);
    Toast.makeText(this, "Text loaded", Toast.LENGTH_SHORT).show();
  }
}

saveText – veri saklama. getPreferences metodu kullanarak SharedPreferences klasından sPref nesneyi alıyoruz. Bu nesne veriyle çalışma (okuma ve yazma) imkanı sunacaktır. MODE_PRIVATE – bir sabittir ve verilere erişimi sağlamak için kullanılıyor. Verileri kaydettikten sonra bu verileri sadece bu uygulama kullanabilecektir. Verileri düzenlemek için Editor nesnesi kullanıyoruz. Bu nesneyi sPref’ten alıyoruz. putString metoduna değişkenin ismi (SAVED_TEXT) ve etText alanının değerini belirtiyoruz. Verileri kaydetmek için commit komutu kullanmalıyız. Verileri kaydettikten sonra ekrana mesajı göndereceğiz.

loadText – verileri yükle. saveText ki gibi getPreferences metodu kullanarak SharedPreferences klasından sPref nesneyi alıyoruz. MODE_PRIVATE yine kullanıyoruz ama bu sefer sadece verileri yazmak için. Burada Editor’ü kullanmıyoruz çünkü verileri sadece okuyacağız.Verileri okumak için  getString metodu kullanıyoruz. Parametre olarak ismi ve değeri (varsayılan boş satırı kullanılıyor) kullanılıyor. Sonraki aşamada etText alanına değeri yazdırıyoruz ve verilerin başarıyla okunduğu mesajını veriyoruz.

Projeyi kaydedelim ve çalıştıralım.

Giriş alanına bir şey yazalım ve Save butonuna basmadan Back butonuna basalım.

hellotechn

Uygulamayı tekrar çalıştıralım giriş alanı boş olduğunu görüyoruz. Load butonuna basıldığı zaman bir şey olmuyor. Çünkü biz bir şey kaydetmedik.

empty

Şimdi kaydedelim ve uygulamayı kapatalım.

textsaved

Uygulamayı tekrar açalım ve Load butonuna basalım, giriş alanında bizim kaydettiğimiz veriyi görebiliriz.

textloaded

Şimdi programı biraz değişelim. Program verinin kaydetmesi ve yazdırmasını otomatik (butonlara basmadan) yapsın. Bunu yapmak için loadText metodu onCreate çağıracağız.

public void onCreate(Bundle savedInstanceState) {

    ...

    btnLoad = (Button) findViewById(R.id.btnLoad);
    btnLoad.setOnClickListener(this);

    loadText();
}

Ve saveText – onDestroy metodunda.

@Override
  protected void onDestroy() {
    saveText();
    super.onDestroy();
  }

Kaydedelim ve çalıştıralım. Şimdi verileri girdikten sonra uygulamayı kapatabiliriz. Verilerimiz otomatik olarak sistemde kaydediliyor. Tabii Save ve Load butonları da çalışıyor.

MainActivity.java dosyasının tam kodu:

import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

  EditText etText;
  Button btnSave, btnLoad;

  SharedPreferences sPref;

  final String SAVED_TEXT = "saved_text";

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        etText = (EditText) findViewById(R.id.etText);

        btnSave = (Button) findViewById(R.id.btnSave);
        btnSave.setOnClickListener(this);

        btnLoad = (Button) findViewById(R.id.btnLoad);
        btnLoad.setOnClickListener(this);

        loadText();
    }

  @Override
  public void onClick(View v) {
    switch (v.getId()) {
    case R.id.btnSave:
      saveText();
      break;
    case R.id.btnLoad:
      loadText();
      break;
    default:
      break;
    }
  }

  void saveText() {
    sPref = getPreferences(MODE_PRIVATE);
    Editor ed = sPref.edit();
    ed.putString(SAVED_TEXT, etText.getText().toString());
    ed.commit();
    Toast.makeText(this, "Text saved", Toast.LENGTH_SHORT).show();
  }

  void loadText() {
    sPref = getPreferences(MODE_PRIVATE);
    String savedText = sPref.getString(SAVED_TEXT, "");
    etText.setText(savedText);
    Toast.makeText(this, "Text loaded", Toast.LENGTH_SHORT).show();
  }

  @Override
  protected void onDestroy() {
    saveText();
    super.onDestroy();
  }

}

 

Ders Sonu Notları:

Bu derste Preferences kullanarak verileri kaydetmeyi öğrendik. Gelecek derslerimizde aynı şeyi SQLite kullanarak yapacağız.

 

Etiketler: AndroidAndroid programlama dersleridersextrasgetPreferencesgetStringINIloadloadTextMobilonDestroyprogramlamasavesaveTextSQLiteteknolojiuygulamaYazılımyeni
PaylaşPaylaşTweetYollaPaylaş
Victor Cuiumju

Victor Cuiumju

Yorum Yap Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

RSS Technopat Sosyal

  • MSI Katana A17 satıp masaüstü bilgisayar almak mantıklı mı?
  • En iyi CoD oyunları hangisi?
  • CS2 basebuilder server neden yok?
  • 3500 TL'ye PC için gamepad önerisi
  • SSD'nin her ayrıntısını ve durumunu öğrenmek
  • SteelSeries arena 9 kablosunu değiştirmek mümkün müdür?
  • Windows 11'de bir şeye tıklayınca sürekli yeni masaüstü açma isteği geliyor
  • YSK 2027 için nasıl çalışılmalı?
  • İlanında olan 76 bin TL'lik sıfır Hero dash 125 gerçek midir?
  • GameGaraj R9T-RTX5070 Ti AMD Ryzen 9 9955HX3D yaşanan sorunlar ve desteğe attığım mail ve çözümleri

Technopat Video

Şu an oynayan

Apple’ı 20’ye katlayan saat! Huawei Watch GT 6 Pro incelemesi

Huawei Watch GT 6 Pro

Apple’ı 20’ye katlayan saat! Huawei Watch GT 6 Pro incelemesi

Akıllı Saat
Technopat ofisi Eylül ayında neler aldı? 

Technopat ofisi Eylül ayında neler aldı? 

Giyilebilir Teknoloji
Gigabyte AORUS FO27Q5P: 500 Hz QD-OLED ile rekabetçi oyunculara özel monitör

Gigabyte AORUS FO27Q5P: 500 Hz QD-OLED ile rekabetçi oyunculara özel monitör

Haber

Teknoloji tutkunu Technopatların ortak adresi: Technopat.net!

Güncel teknoloji, internet, donanım, yazılım, oyun ve daha fazlası haber, makale ve videolar ile Technopat’ta sizlerle.


01010100 01100101 01100011 01101000 01101110 01101111 01110000 01100001 01110100

Kategoriler

  • Yapay Zeka
  • Ev Teknolojileri
  • Makale
  • Video

Sosyal Medya

Bağlantılar

  • Hakkında
  • Haber
  • Video
  • Sosyal
  • Çerez Politikası
© 2011-2025 Technopat. Tüm Hakları Saklıdır.
Netse
Çerez Onayı
Web sitemizi ziyaret ettiğinizde, kullanıcı deneyiminizi daha iyi hale getirmek, hizmetlerimizi size daha etkin bir şekilde sunabilmek için çerezler (cookies) ve benzeri araçlar kullanıyoruz. Çerezler, internet sitesinin düzgün çalışmasını sağlamak, içeriği kişiselleştirmek, sosyal medya özellikleri sağlamak ve trafik analizi yapmak için kullanılan küçük metin dosyalarıdır. Çerezleri nasıl kullandığımız ve kişisel verilerinizi nasıl işlediğimiz hakkında daha fazla bilgi almak için çerez politikamızı ve kişisel veri politikamızı inceleyebilirsiniz.
Fonksiyonel Her zaman aktif
Teknik depolama veya erişim, sadece kullanıcının açıkça talep ettiği belirli bir hizmetin kullanılmasını sağlama amacıyla veya iletişimin elektronik iletişim ağı üzerinden iletilmesinin tek amacıyla yasal olarak kesinlikle gereklidir.
Tercihler
Teknik depolama veya erişim, abone veya kullanıcı tarafından istenmeyen tercihlerin depolanması yasal amacıyla gereklidir.
İstatistikler
Sadece istatistiksel amaçlarla kullanılan teknik depolama veya erişim. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Pazarlama
Teknik depolama veya erişim, reklam gönderimi için kullanıcı profilleri oluşturmak veya kullanıcıyı bir web sitesinde veya birden fazla web sitesinde benzer pazarlama amaçları için takip etmek amacıyla gereklidir.
Seçenekleri yönet Hizmetleri yönetin {vendor_count} satıcılarını yönetin Bu amaçlar hakkında daha fazla bilgi edinin
Tercihleri yönet
{title} {title} {title}
Onayı Yönet
En iyi deneyimleri sunmak için, cihaz bilgilerini saklamak ve/veya bunlara erişmek amacıyla çerezler gibi teknolojiler kullanıyoruz. Bu teknolojilere izin vermek, bu sitedeki tarama davranışı veya benzersiz kimlikler gibi verileri işlememize izin verecektir. Onay vermemek veya onayı geri çekmek, belirli özellikleri ve işlevleri olumsuz etkileyebilir.
Fonksiyonel Her zaman aktif
Teknik depolama veya erişim, abone veya kullanıcı tarafından açıkça talep edilen belirli bir hizmetin kullanılmasını sağlamak veya bir elektronik iletişim ağı üzerinden bir iletişimin iletimini gerçekleştirmek amacıyla meşru bir amaç için kesinlikle gereklidir.
Tercihler
Teknik depolama veya erişim, abone veya kullanıcı tarafından talep edilmeyen tercihlerin saklanmasının meşru amacı için gereklidir.
İstatistik
Sadece istatistiksel amaçlar için kullanılan teknik depolama veya erişim. Sadece anonim istatistiksel amaçlar için kullanılan teknik depolama veya erişim. Mahkeme celbi, İnternet Hizmet Sağlayıcınızın gönüllü uyumu veya üçüncü bir taraftan ek kayıtlar olmadan, yalnızca bu amaçla depolanan veya alınan bilgiler genellikle kimliğinizi belirlemek için kullanılamaz.
Pazarlama
Teknik depolama veya erişim, reklam göndermek için kullanıcı profilleri oluşturmak veya benzer pazarlama amaçları için kullanıcıyı bir web sitesinde veya birkaç web sitesinde izlemek için gereklidir.
Seçenekleri yönet Hizmetleri yönetin {vendor_count} satıcılarını yönetin Bu amaçlar hakkında daha fazla bilgi edinin
Tercihleri görüntüle
{title} {title} {title}
Sonuç bulunamadı
Bütün Sonuçları Göster
  • Giriş
  • Teknoloji Haberleri
  • Sosyal
  • Video
  • Tavsiyeler
  • İncelemeler
    • Video İncelemeler
  • Güvenlik
  • Oyun
  • Makale
    • Pratik
    • Yazar Köşeleri

© 2025 Technopat
Sorularınız için Technopat Sosyal