Androidda bir Activitydan boshqasiga ma'lumotlarni qanday o'tkazish mumkin?
sobes.tech AI
AIdan javob
Bir nechta usullar mavjud:
-
Intent Extras: Eng keng tarqalgan usul. Ma'lumotlar
Bundlega paketlanadi vaIntentga qo'shiladi.// Birinchi Activity da Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("kalit", "qiymat"); // Primitiv turlar intent.putExtra("obyekt", new MySerializableObject()); // Serializable startActivity(intent); // Ikkinchi Activity da Bundle extras = getIntent().getExtras(); if (extras != null) { String qiymat = extras.getString("kalit"); MySerializableObject obyekt = (MySerializableObject) extras.getSerializable("obyekt"); } -
Parcelable Ob'ektlar:
Serializablega o'xshash, lekin ko'proq ishlatiladigan ob'ektlar uchun samaraliroq.Parcelableinterfeysini amalga oshirishni talab qiladi.// Birinchi Activity da Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("parcelable_obyekt", new MyParcelableObject()); startActivity(intent); // Ikkinchi Activity da Intent intent = getIntent(); MyParcelableObject parcelableObyekt = intent.getParcelableExtra("parcelable_obyekt"); -
Shared Preferences: Kichik ma'lumotlarni uzatish uchun mos keladi, ular ilova ishga tushirilganlar o'rtasida saqlanadi.
// Birinchi Activity da SharedPreferences preferences = getSharedPreferences("mening_prefs", MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putString("kalit", "qiymat"); editor.apply(); // yoki commit() // Ikkinchi Activity da SharedPreferences preferences = getSharedPreferences("mening_prefs", MODE_PRIVATE); String qiymat = preferences.getString("kalit", null); // null - standart qiymat -
Statik o'zgaruvchilar: Tavsiya etilmaydi, chunki bu OOP tamoyillarini buzadi va xotira oqib ketishiga olib kelishi mumkin. Faqat juda oddiy holatlar uchun ehtiyotkorlik bilan foydalaning.
// Statik sinfda yoki boshqa kirish mumkin bo'lgan statik o'zgaruvchida public static String statikMa'lumot; // Birinchi Activity da StaticDataHolder.statikMa'lumot = "ma'lumot"; // Ikkinchi Activity da String ma'lumot = StaticDataHolder.statikMa'lumot; -
Ma'lumotlar bazasi/Fayl: Katta hajmdagi ma'lumotlar yoki doimiy bo'lishi kerak bo'lgan ma'lumotlar uchun. Ma'lumotlar SQLite, Room bazasida yoki faylda saqlanadi va ikkinchi Activity ularni o'qiydi.
-
ViewModel (LiveData bilan birga): Arxitektura komponentlari kontekstida, ViewModel UI bilan bog'liq ma'lumotlarni boshqarish uchun afzal qilingan usuldir. Ma'lumotlar Activitylar o'rtasida umumiy ViewModel yoki LiveData voqealari orqali uzatiladi.
// Birinchi Activity da (Kotlin) val intent = Intent(this, SecondActivity::class.java).apply { putExtra("ma'lumot_kluchi", "ma'lumot_qiymati") } startActivity(intent) // Ikkinchi Activity da (Kotlin) val ma'lumot = intent.getStringExtra("ma'lumot_kluchi")
Ma'lumotlarni uzatish usulini tanlash, uzatiladigan ma'lumotlarning turi va hajmiga, shuningdek, doimiylik talablariga bog'liq. Intent Extras orqali ma'lumot uzatish kichik hajmdagi ma'lumotlar va to'g'ridan-to'g'ri Activitylar o'rtasida o'tish uchun standart hisoblanadi.