Sobes.tech
Junior

Android'de bir Activity'den diğerine nasıl veri aktarılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Birkaç yöntem vardır:

  1. Intent Extras: En yaygın yöntem. Veriler Bundle içine paketlenir ve Intent'e eklenir.

    // Birinci Activity'de
    Intent intent = new Intent(this, SecondActivity.class);
    intent.putExtra("anahtar", "değer"); // Primitif tipler
    intent.putExtra("nesne", new MySerializableObject()); // Serializable
    startActivity(intent);
    
    // İkinci Activity'de
    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        String değer = extras.getString("anahtar");
        MySerializableObject nesne = (MySerializableObject) extras.getSerializable("nesne");
    }
    
  2. Parcelable Nesneleri: Serializable'a benzer, ancak sık kullanılan nesneler için daha verimlidir. Parcelable arayüzünü uygulamayı gerektirir.

    // Birinci Activity'de
    Intent intent = new Intent(this, SecondActivity.class);
    intent.putExtra("parcelable_nesne", new MyParcelableObject());
    startActivity(intent);
    
    // İkinci Activity'de
    Intent intent = getIntent();
    MyParcelableObject parcelableNesne = intent.getParcelableExtra("parcelable_nesne");
    
  3. Shared Preferences: Uygulama yeniden başlatmaları arasında saklanması gereken küçük veri miktarları için uygundur.

    // Birinci Activity'de
    SharedPreferences preferences = getSharedPreferences("benim_prefs", MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putString("anahtar", "değer");
    editor.apply(); // veya commit()
    
    // İkinci Activity'de
    SharedPreferences preferences = getSharedPreferences("benim_prefs", MODE_PRIVATE);
    String değer = preferences.getString("anahtar", null); // null varsayılan değerdir
    
  4. Statik Değişkenler: Tavsiye edilmez, çünkü OOP ilkelerini ihlal eder ve bellek sızıntılarına yol açabilir. Sadece çok basit durumlar için dikkatli kullanın.

    // Statik sınıf veya erişilebilir başka bir statik değişken
    public static String statikVeri;
    
    // Birinci Activity'de
    StaticDataHolder.statikVeri = "veri";
    
    // İkinci Activity'de
    String veri = StaticDataHolder.statikVeri;
    
  5. Veritabanı/Dosya: Büyük veri hacimleri veya kalıcı olması gereken veriler için. Veriler veritabanına (SQLite, Room) veya dosyaya kaydedilir ve ikinci Activity tarafından okunur.

  6. ViewModel (LiveData ile birlikte): Mimari bileşenler bağlamında, ViewModel UI ile ilişkili verilerin yönetimi için tercih edilen yoldur. Veriler, paylaşılan ViewModel veya LiveData olayları aracılığıyla aktarılır.

    // Birinci Activity'de (Kotlin)
    val intent = Intent(this, SecondActivity::class.java).apply {
        putExtra("veri_anahtarı", "veri_değeri")
    }
    startActivity(intent)
    
    // İkinci Activity'de (Kotlin)
    val veri = intent.getStringExtra("veri_anahtarı")
    

Veri aktarım yöntemi, iletilecek verilerin tipi ve hacmine, ayrıca kalıcılık gereksinimlerine bağlıdır. Intent Extras kullanımı, küçük veri hacimleri ve doğrudan Activity geçişleri için standarttır.