Junior
Jak přenést data z jedné aktivity do druhé v Androidu?
sobes.tech AI
Odpověď od AI
Data lze přenášet pomocí Intent:
-
V výchozí Activity: Umístěte data do Extras
Intentpomocí metod jakoputExtra(String key, value).// Příprava Intent val intent = Intent(this, TargetActivity::class.java) // Přidání dat intent.putExtra("myString", "Ahoj z první Activity") intent.putExtra("myInt", 123) intent.putExtra("myBool", true) // Objekty implementující Parcelable nebo Serializable lze také předat // intent.putExtra("myObject", myParcelableObject) // Spuštění nové Activity startActivity(intent) -
V cílové Activity: Získejte data z Extras
Intent, který je obdržen v metoděonCreateneboonNewIntent.// V onCreate() cílové Activity override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_target) // Získání Intentu, který spustil tuto Activity val intent = intent // Vytažení dat podle klíče val myString = intent.getStringExtra("myString") val myInt = intent.getIntExtra("myInt", 0) // Druhý argument je výchozí hodnota val myBool = intent.getBooleanExtra("myBool", false) // Zpracování extrahovaných dat println("Přijatý řetězec: $myString") println("Přijaté číslo: $myInt") println("Přijaté boolean: $myBool") // Pro objekty Parcelable nebo Serializable // val myObject = intent.getParcelableExtra<MyParcelableClass>("myObject") }
Další metody přenosu dat, vhodné pro složitější scénáře nebo velké objemy dat:
ViewModelsdílený mezi Fragmenty/Activities (přes SharedViewModel): Vhodné pro společná data mezi souvisejícími komponentami.Bundle(uvnitř ExtrasIntent):putExtrave skutečnosti používá interněBundle.- Statické proměnné/singletony: Je třeba je používat opatrně, mohou vést k únikům paměti a problémům se stavem.
- Databáze/SharedPreferences: Pro trvalé ukládání nebo přenos dat, která je třeba zachovat.
- Event Bus (například EventBus, RxJava): Pro přenos událostí nebo dat mezi komponentami asynchronně.
- File I/O: Uložení do souboru a čtení ze souboru.