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:
-
Kaynak Activity'de: Verileri
putExtra(String key, value)gibi yöntemlerleIntent'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) -
Hedef Activity'de:
onCreateveyaonNewIntentmetodunda alınanIntent'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:
ViewModelpaylaşımı (SharedViewModel aracılığıyla): Bağlantılı bileşenler arasında ortak veriler için uygundur.Bundle(Extras içinde):putExtraaslında içsel birBundlekullanı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.