Junior
Jak przekazać dane z jednej aktywności do drugiej w Androidzie?
sobes.tech AI
Odpowiedź od AI
Dane można przesłać za pomocą Intent:
-
W aktywności źródłowej: Umieść dane w Extras
Intentza pomocą metod takich jakputExtra(String key, value).// Przygotowanie Intent val intent = Intent(this, TargetActivity::class.java) // Dodanie danych intent.putExtra("myString", "Cześć z pierwszej Activity") intent.putExtra("myInt", 123) intent.putExtra("myBool", true) // Możesz przesłać obiekty implementujące Parcelable lub Serializable // intent.putExtra("myObject", myParcelableObject) // Uruchomienie nowej Activity startActivity(intent) -
W docelowej Activity: Wyodrębnij dane z Extras
Intent, otrzymanego w metodzieonCreatelubonNewIntent.// W onCreate() docelowej Activity override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_target) // Uzyskanie Intent, który uruchomił tę Activity val intent = intent // Wyodrębnianie danych po kluczu val myString = intent.getStringExtra("myString") val myInt = intent.getIntExtra("myInt", 0) // Drugi argument to wartość domyślna val myBool = intent.getBooleanExtra("myBool", false) // Przetwarzanie wyodrębnionych danych println("Odebrany ciąg: $myString") println("Odebrana liczba: $myInt") println("Odebrany boolean: $myBool") // Dla obiektów Parcelable lub Serializable // val myObject = intent.getParcelableExtra<MyParcelableClass>("myObject") }
Inne metody przesyłania danych, odpowiednie dla bardziej złożonych scenariuszy lub dużych ilości danych:
ViewModelwspółdzielony między Fragmentami/Activities (przez SharedViewModel): Przydatne do wspólnych danych między powiązanymi komponentami.Bundle(wewnątrz Extras Intent):putExtraw rzeczywistości używaBundlewewnętrznie.- Zmienne statyczne/singletony: Należy używać ostrożnie, mogą prowadzić do wycieków pamięci i problemów ze stanem.
- Baza danych/SharedPreferences: Do trwałego przechowywania lub przesyłania danych, które muszą być zachowane.
- Event Bus (np. EventBus, RxJava): Do przesyłania zdarzeń lub danych między komponentami w trybie asynchronicznym.
- File I/O: Zapisywanie do pliku i odczyt z niego.