Kā pārsūtīt datus no vienas Activity uz otru Android?
sobes.tech AI
Atbilde no AI
Ir vairākas metodes:
-
Intent Extras: Visbiežāk izmantotā metode. Dati tiek iepakoti
Bundleun pievienotiIntent.// Pirmā Activity Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("atslēga", "vērtība"); // Primīti tipi intent.putExtra("objekts", jauns MySerializableObject()); // Serializable startActivity(intent); // Otrā Activity Bundle extras = getIntent().getExtras(); if (extras != null) { String vērtība = extras.getString("atslēga"); MySerializableObject objekts = (MySerializableObject) extras.getSerializable("objekts"); } -
Parcelable objekti: Līdzīgi
Serializable, bet efektīvāki bieži pārsūtāmiem objektiem. PrasaParcelableinterfeisa īstenošanu.// Pirmā Activity Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("parcelable_objekts", jauns MyParcelableObject()); startActivity(intent); // Otrā Activity Intent intent = getIntent(); MyParcelableObject parcelableObjekts = intent.getParcelableExtra("parcelable_objekts"); -
Shared Preferences: Piemērots nelielu datu pārsūtīšanai, kas jāglabā starp lietotnes palaiem.
// Pirmā Activity SharedPreferences preferences = getSharedPreferences("manas_preferences", MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putString("atslēga", "vērtība"); editor.apply(); // vai commit() // Otrā Activity SharedPreferences preferences = getSharedPreferences("manas_preferences", MODE_PRIVATE); String vērtība = preferences.getString("atslēga", null); // null ir noklusējuma vērtība -
Statiskas mainīgās: Nav ieteicams, jo pārkāpj OOP principus un var novest pie atmiņas noplūdēm. Lietojiet ar piesardzību un tikai ļoti vienkāršos gadījumos.
// Statiskajā klasē vai citur pieejamā statiskā mainīgā public static String staticData; // Pirmā Activity StaticDataHolder.staticData = "dati"; // Otrā Activity String dati = StaticDataHolder.staticData; -
Datubāze/Fails: Lielāku datu vai ilgtermiņa datu glabāšanai. Dati tiek saglabāti datubāzē (SQLite, Room) vai failā, un otrā Activity tos nolas.
-
ViewModel (kopā ar LiveData): Arhitektūras komponentu kontekstā ViewModel ir ieteicamākais veids, kā pārvaldīt UI saistītos datus. Dati starp Activity tiek pārsūtīti caur kopīgu ViewModel vai caur LiveData notikumiem.
// Pirmā Activity (Kotlin) val intent = Intent(this, SecondActivity::class.java).apply { putExtra("datu_atslēga", "datu_vērtība") } startActivity(intent) // Otrā Activity (Kotlin) val dati = intent.getStringExtra("datu_atslēga")
Izvēle ir atkarīga no pārsūtāmo datu veida un apjoma, kā arī no prasībām par ilgtermiņa glabāšanu. Datu pārsūtīšana caur Intent Extras ir standarts nelielu datu apjomiem un tieši pārejot starp Activity.