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: შენახვა ფაილში და წაკითხვა მისგან.