Junior
Ինչպե՞ս փոխանցել տվյալները մեկ ակտիվությունից մյուսին Android-ում։
sobes.tech AI
Պատասխան AI-ից
Տվյալները կարող եք փոխանցել Intent-ի միջոցով.
-
Անհատական Activity-ում: Տվյալները տեղադրեք Extras
Intent-ի մեջputExtra(String key, value)մեթոդների միջոցով:// Intent-ի պատրաստում val intent = Intent(this, TargetActivity::class.java) // Տվյալների ավելացում intent.putExtra("myString", "Բարև առաջին Activity-ից") intent.putExtra("myInt", 123) intent.putExtra("myBool", true) // Կարող եք փոխանցել նաև Parcelable կամ Serializable-ով իրականացնող օբյեկտներ // intent.putExtra("myObject", myParcelableObject) // Նոր Activity-ի մեկնարկ startActivity(intent) -
Նպատակային Activity-ում: Հանեք տվյալները Extras
Intent-ից, որը ստացել եքonCreateկամonNewIntentմեթոդներում:// `onCreate()`-ում նպատակային Activity-ի override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_target) // Ստացեք Intent-ը, որը գործարկել է այս Activity-ը val intent = intent // Տվյալների հանելը բանալիով val myString = intent.getStringExtra("myString") val myInt = intent.getIntExtra("myInt", 0) // Երկրորդ արգումենտը՝ կանխադրված արժեք val myBool = intent.getBooleanExtra("myBool", false) // Հաշվարկը ստացված տվյալների println("Ստացված տողը՝ $myString") println("Ստացված թիվը՝ $myInt") println("Ստացված բուլյան՝ $myBool") // Parcelable կամ Serializable օբյեկտների համար // val myObject = intent.getParcelableExtra<MyParcelableClass>("myObject") }
Այլ մեթոդներ տվյալների փոխանցման համար, որոնք հարմար են ավելի բարդ սցենարների կամ մեծ ծավալի տվյալների համար.
ViewModel-ը, որը համատեղ է Fragment-ների/Activities-ների միջև (SharedViewModel-ով): Հարմար է ընդհանուր տվյալների համար կապված կոմպոնենտների միջև.Bundle(ExtrasIntent-ի ներսում):putExtraիրականում օգտագործում էBundle-ը ներսում:- Սթատիկ փոփոխականներ/սինգլտոններ: Պետք է զգուշությամբ օգտագործել, կարող են հանգեցնել հիշողության լքման և վիճակի խնդիրների:
- Տվյալների բազա/SharedPreferences: Անվճար պահեստավորման կամ տվյալների փոխանցման համար, որոնք պետք է պահպանվեն:
- Event Bus (օրինակ, EventBus, RxJava): Իրադարձությունների կամ տվյալների փոխանցում անսինխրոն ռեժիմում:
- Ֆայլային I/O: Ֆայլում պահել և կարդալ: