Sobes.tech
Junior

Androidда бир Activityден башкасына маалыматтарды кантип өткөрсө болот?

sobes.tech AI

AIден жооп

Көптөгөн жолдору бар:

  1. 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(" объект ");
    }
    
  2. 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_объект ");
    
  3. 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 - алдын ала коюлган мааниси
    
  4. Статикалык өзгөрмөлөр: Кененирээк сунушталбайт, анткени ал OOP принциптерин бузат жана эс тутумдун агып кетишине алып келиши мүмкүн. Эскертүү менен гана колдонуу керек жана өтө жөнөкөй учурларда.

    // Статикалык класс же башка жеткиликтүү статикалык өзгөрмөдө
    public static String staticData;
    
    // Биринчи Activityде
    StaticDataHolder.staticData = "маалымат";
    
    // Экинчи Activityде
    String маалыматтар = StaticDataHolder.staticData;
    
  5. Маалымат базасы/Файл: Көп көлөмдүү маалыматтар үчүн же туруктуу сакталуучу маалыматтар. Маалыматтар базада (SQLite, Room) же файлда сакталат жана экинчи Activity аны окуйт.

  6. 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 ортосунда түз өтүүдө колдонулат.