Androidда бир Activityден башкасына маалыматтарды кантип өткөрсө болот?
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 - алдын ала коюлган мааниси -
Статикалык өзгөрмөлөр: Кененирээк сунушталбайт, анткени ал OOP принциптерин бузат жана эс тутумдун агып кетишине алып келиши мүмкүн. Эскертүү менен гана колдонуу керек жана өтө жөнөкөй учурларда.
// Статикалык класс же башка жеткиликтүү статикалык өзгөрмөдө 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 аркылуу өткөрүү кичинекей көлөмдөр үчүн стандарт болуп саналат жана Activity ортосунда түз өтүүдө колдонулат.