Sobes.tech
Junior

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

sobes.tech yapay zeka

AI'dan gelen yanıt

Veriler Intent kullanılarak iletilebilir:

  1. Kaynak Activity'de: Verileri putExtra(String key, value) gibi yöntemlerle Intent'in Extras'ına koyun.

    // Intent hazırlama
    val intent = Intent(this, TargetActivity::class.java)
    // Veri ekleme
    intent.putExtra("myString", "Merhaba ilk Activity'den")
    intent.putExtra("myInt", 123)
    intent.putExtra("myBool", true)
    // Parcelable veya Serializable uygulayan nesneleri de iletebilirsiniz
    // intent.putExtra("myObject", myParcelableObject)
    
    // Yeni Activity'yi başlat
    startActivity(intent)
    
  2. Hedef Activity'de: onCreate veya onNewIntent metodunda alınan Intent'ten Extras verilerini çıkarın.

    // Hedef Activity'de onCreate() içinde
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_target)
    
        // Bu Activity'yi başlatan Intent'i alın
        val intent = intent
    
        // Anahtara göre verileri çıkarın
        val myString = intent.getStringExtra("myString")
        val myInt = intent.getIntExtra("myInt", 0) // İkinci argüman varsayılan değer
        val myBool = intent.getBooleanExtra("myBool", false)
    
        // Çekilen verileri işleyin
        println("Alınan dize: $myString")
        println("Alınan sayı: $myInt")
        println("Alınan boolean: $myBool")
    
        // Parcelable veya Serializable nesneleri için
        // val myObject = intent.getParcelableExtra<MyParcelableClass>("myObject")
    }
    

Daha karmaşık senaryolar veya büyük veri hacimleri için uygun diğer veri iletim yöntemleri:

  • ViewModel paylaşımı (SharedViewModel aracılığıyla): Bağlantılı bileşenler arasında ortak veriler için uygundur.
  • Bundle (Extras içinde): putExtra aslında içsel bir Bundle kullanır.
  • Statik değişkenler/singletonlar: Dikkatli kullanılmalıdır, çünkü bellek sızıntılarına ve durum sorunlarına yol açabilirler.
  • Veritabanı/SharedPreferences: Kalıcı depolama veya saklama gerektiren veriler için.
  • Event Bus (örneğin, EventBus, RxJava): Asenkron olarak bileşenler arasında olay veya veri iletimi için.
  • Dosya Giriş/Çıkış: Dosyaya kaydetme ve ondan okuma.