Sobes.tech
Junior

Kā pārsūtīt datus no vienas aktivitātes uz citu Android?

sobes.tech AI

Atbilde no AI

Datus var pārsūtīt, izmantojot Intent:

  1. Sākotnējā Activity: Ielieciet datus Extras Intent ar metodēm, piemēram, putExtra(String key, value):

    // Intent sagatavošana
    val intent = Intent(this, TargetActivity::class.java)
    // Datu pievienošana
    intent.putExtra("myString", "Sveiki no pirmā Activity")
    intent.putExtra("myInt", 123)
    intent.putExtra("myBool", true)
    // Var pārsūtīt objektus, kas realizē Parcelable vai Serializable
    // intent.putExtra("myObject", myParcelableObject)
    
    // Jauna Activity uzsākšana
    startActivity(intent)
    
  2. Mērķa Activity: Izvelciet datus no Extras Intent, kas saņemts onCreate vai onNewIntent metodēs:

    // `onCreate()` mērķa Activity
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_target)
    
        // Saņemto Intent, kas uzsāka šo Activity
        val intent = intent
    
        // Datu izvilkšana pēc atslēgas
        val myString = intent.getStringExtra("myString")
        val myInt = intent.getIntExtra("myInt", 0) // Otrs arguments - noklusējuma vērtība
        val myBool = intent.getBooleanExtra("myBool", false)
    
        // Apstrādājiet saņemto datus
        println("Saņemtais teksts: $myString")
        println("Saņemtais skaitlis: $myInt")
        println("Saņemtais boolean: $myBool")
    
        // Par Parcelable vai Serializable objektiem
        // val myObject = intent.getParcelableExtra<MyParcelableClass>("myObject")
    }
    

Citas datu pārsūtīšanas metodes, piemērotas sarežģītākiem scenārijiem vai lielam datu apjomam:

  • ViewModel koplietošana starp Fragmentiem/Activities (caur SharedViewModel): Piemērots kopīgiem datiem starp saistītām komponentēm.
  • Bundle (Extras Intent iekšpusē): putExtra patiesībā izmanto Bundle iekšpusē.
  • Statiskās mainīgās/singleton objekti: Jālieto uzmanīgi, var novest pie atmiņas noplūdes un stāvokļa problēmām.
  • Datu bāze/SharedPreferences: Pastāvīga glabāšana vai datu pārsūtīšana, kas prasa saglabāšanu.
  • Event Bus (piem., EventBus, RxJava): Notikumu vai datu pārsūtīšana asinhroni.
  • Failu I/O: Saglabāšana failā un lasīšana no tā.