Junior
Come trasferire i dati da una attività all'altra in Android?
sobes.tech AI
Risposta dell'AI
I dati possono essere trasmessi utilizzando Intent:
-
Nell'Activity di origine: Inserisci i dati negli Extras dell'
Intentusando metodi comeputExtra(String key, value).// Preparare l'Intent val intent = Intent(this, TargetActivity::class.java) // Aggiungere dati intent.putExtra("myString", "Ciao dalla prima Activity") intent.putExtra("myInt", 123) intent.putExtra("myBool", true) // È possibile passare oggetti che implementano Parcelable o Serializable // intent.putExtra("myObject", myParcelableObject) // Avviare la nuova Activity startActivity(intent) -
Nell'Activity di destinazione: Estrai i dati dagli Extras dell'
Intentricevuto inonCreateoonNewIntent.// In onCreate() dell'Activity di destinazione override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_target) // Ottenere l'Intent che ha avviato questa Activity val intent = intent // Estrazione dei dati tramite chiave val myString = intent.getStringExtra("myString") val myInt = intent.getIntExtra("myInt", 0) // Secondo argomento: valore di default val myBool = intent.getBooleanExtra("myBool", false) // Elaborare i dati estratti println("Stringa ricevuta: $myString") println("Numero ricevuto: $myInt") println("Booleano ricevuto: $myBool") // Per oggetti Parcelable o Serializable // val myObject = intent.getParcelableExtra<MyParcelableClass>("myObject") }
Altri metodi di trasmissione dati, adatti a scenari più complessi o grandi volumi di dati:
ViewModelcondiviso tra Fragment/Activities (tramite SharedViewModel): Utile per dati condivisi tra componenti collegati.Bundle(all'interno degli Extras dell'Intent):putExtrautilizza internamente unBundle.- Variabili statiche/singleton: Da usare con cautela, possono causare perdite di memoria e problemi di stato.
- Database/SharedPreferences: Per memorizzazione persistente o trasmissione di dati che devono essere conservati.
- Event Bus (ad esempio, EventBus, RxJava): Per trasmettere eventi o dati tra componenti in modo asincrono.
- File I/O: Salvataggio su file e lettura da esso.