Sobes.tech
Junior

Kako preneti podatke iz jedne aktivnosti u drugu u Androidu?

sobes.tech АИ

Одговор од АИ

Podaci se mogu preneti korišćenjem Intent:

  1. U izvornom Activity: Stavite podatke u Extras Intent pomoću metoda poput putExtra(String key, value).

    // Priprema Intent
    val intent = Intent(this, TargetActivity::class.java)
    // Dodavanje podataka
    intent.putExtra("myString", "Pozdrav iz prvog Activity")
    intent.putExtra("myInt", 123)
    intent.putExtra("myBool", true)
    // Možete prenositi objekte koji implementiraju Parcelable ili Serializable
    // intent.putExtra("myObject", myParcelableObject)
    
    // Pokretanje novog Activity
    startActivity(intent)
    
  2. U ciljanom Activity: Izvadite podatke iz Extras Intent dobijenog u metodi onCreate ili onNewIntent.

    // U onCreate() ciljnog Activity
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_target)
    
        // Dobijanje Intent-a koji je pokrenuo ovaj Activity
        val intent = intent
    
        // Izvlačenje podataka po ključu
        val myString = intent.getStringExtra("myString")
        val myInt = intent.getIntExtra("myInt", 0) // Drugi argument je podrazumevana vrednost
        val myBool = intent.getBooleanExtra("myBool", false)
    
        // Obrada izvlačenih podataka
        println("Primljena linija: $myString")
        println("Primljeni broj: $myInt")
        println("Primljeni boolean: $myBool")
    
        // Za Parcelable ili Serializable objekte
        // val myObject = intent.getParcelableExtra<MyParcelableClass>("myObject")
    }
    

Druge metode prenosa podataka, pogodne za složenije scenarije ili velike količine podataka:

  • ViewModel deljen između Fragments/Activities (kroz SharedViewModel): Pogodno za zajedničke podatke između povezanih komponenti.
  • Bundle (unutar Extras Intent): putExtra zapravo koristi Bundle unutar.
  • Staticke promenljive/singleton objekti: Treba ih koristiti oprezno, mogu dovesti do curenja memorije i problema sa stanjem.
  • Baza podataka/SharedPreferences: Za trajno skladištenje ili prenos podataka koji zahtevaju čuvanje.
  • Event Bus (npr. EventBus, RxJava): Za prenos događaja ili podataka između komponenti asinhrono.
  • File I/O: Čuvanje u fajl i čitanje iz njega.