როგორ გადავცეთ მონაცემები ერთ Activity-დან მეორეში Android-ში?
sobes.tech AI
პასუხი AI-სგან
რამდენიმე გზა არსებობს:
-
Intent Extras: ყველაზე გავრცელებული მეთოდი. მონაცემები შეფუთულია
Bundle-ში და დამატებულიაIntent-თან.// პირველ Activity-ში Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("საკლუჩე", "მნიშვნელობა"); // პრიმიტიული ტიპები intent.putExtra("ობიექტი", new MySerializableObject()); // Serializable startActivity(intent); // მეორე Activity-ში Bundle extras = getIntent().getExtras(); if (extras != null) { String მნიშვნელობა = extras.getString("საკლუჩე"); MySerializableObject ობიექტი = (MySerializableObject) extras.getSerializable("ობიექტი"); } -
Parcelable ობიექტები: მსგავსია
Serializable-ის, მაგრამ უფრო ეფექტურია ხშირად გადასაცემი ობიექტებისთვის. მოითხოვსParcelableინტერფეისის რეალიზაციას.// პირველ Activity-ში Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("parcelable_ობიექტი", new MyParcelableObject()); startActivity(intent); // მეორე Activity-ში Intent intent = getIntent(); MyParcelableObject parcelableОбъект = intent.getParcelableExtra("parcelable_ობიექტი"); -
Shared Preferences: შესაფერისია მცირე მოცულობის მონაცემებისთვის, რომლებიც უნდა შენარჩუნდეს აპლიკაციის დაწყებებს შორის.
// პირველ Activity-ში SharedPreferences preferences = getSharedPreferences("my_prefs", MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putString("საკლუჩე", "მნიშვნელობა"); editor.apply(); // ან commit() // მეორე Activity-ში SharedPreferences preferences = getSharedPreferences("my_prefs", MODE_PRIVATE); String მნიშვნელობა = preferences.getString("საკლუჩე", null); // null - საწყისი მნიშვნელობა -
სტატიკური ცვლადები: არ არის რეკომენდებული, რადგან არღვევს ობიექტზე ორიენტირებულ პროგრამირებას და შეიძლება გამოიწვიოს მეხსიერების გაჟონვა. გამოიყენეთ ფრთხილად და მხოლოდ ძალიან მარტივ შემთხვევებში.
// სტატიკურ კლასში ან სხვა ხელმისაწვდომ სტატიკურ ცვლადში public static String staticData; // პირველ Activity-ში StaticDataHolder.staticData = "მონაცემები"; // მეორე Activity-ში String მონაცემები = StaticDataHolder.staticData; -
მონაცემთა ბაზა/ფაილი: დიდი მოცულობის მონაცემებისთვის ან პერმანენტული შენახვისთვის. მონაცემები ინახება ბაზაში (SQLite, Room) ან ფაილში, და მეორე Activity-ი კითხულობს მათ.
-
ViewModel (LiveData-თან ერთად): არქიტექტურული კომპონენტების კონტექსტში, ViewModel არის სასურველი მეთოდი UI-თან დაკავშირებული მონაცემების მართვისთვის. მონაცემები Activity-ებს შორის გადაეცემა საერთო ViewModel-ის ან LiveData-ის საშუალებით.
// პირველ Activity-ში (Kotlin) val intent = Intent(this, SecondActivity::class.java).apply { putExtra("data_key", "data_value") } startActivity(intent) // მეორე Activity-ში (Kotlin) val data = intent.getStringExtra("data_key")
მეთოდის არჩევა დამოკიდებულია გადაცემული მონაცემების ტიპსა და მოცულობაზე, ასევე პერმანენტობის მოთხოვნებზე. მონაცემების გადაცემა Intent Extras-ის საშუალებით არის სტანდარტული მცირე მოცულობის მონაცემებისთვის და პირდაპირი გადასვლის დროს.