Sobes.tech
Junior

Android-də bir Activity-dən digərinə məlumatları necə ötürmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Müxtəlif üsullar mövcuddur:

  1. Intent Extras: Ən çox istifadə olunan üsul. Məlumatlar Bundle-ə yığılır və Intent-ə əlavə olunur.

    // Birinci Activity-də
    Intent intent = new Intent(this, SecondActivity.class);
    intent.putExtra("açar", "dəyər"); // Primitiv tiplər
    intent.putExtra("obyekt", new MySerializableObject()); // Serializable
    startActivity(intent);
    
    // İkinci Activity-də
    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        String dəyər = extras.getString("açar");
        MySerializableObject obyekt = (MySerializableObject) extras.getSerializable("obyekt");
    }
    
  2. Parcelable Ob'ektlər: Serializable-a bənzər, lakin daha səmərəli. Parcelable interfeysini həyata keçirməyi tələb edir.

    // Birinci Activity-də
    Intent intent = new Intent(this, SecondActivity.class);
    intent.putExtra("parcelable_obyekt", new MyParcelableObject());
    startActivity(intent);
    
    // İkinci Activity-də
    Intent intent = getIntent();
    MyParcelableObject obyektParcelable = intent.getParcelableExtra("parcelable_obyekt");
    
  3. Shared Preferences: Kiçik məlumatların ötürülməsi üçün uyğundur və tətbiqin işə salınması arasında saxlanılır.

    // Birinci Activity-də
    SharedPreferences preferences = getSharedPreferences("mənim_prefs", MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putString("açar", "dəyər");
    editor.apply(); // və ya commit()
    
    // İkinci Activity-də
    SharedPreferences preferences = getSharedPreferences("mənim_prefs", MODE_PRIVATE);
    String dəyər = preferences.getString("açar", null); // null - standart dəyər
    
  4. Statik dəyişənlər: Tövsiyə edilmir, çünki OOP prinsiplərini pozur və yaddaş sızıntılarına səbəb ola bilər. Yalnız çox sadə hallarda ehtiyatla istifadə edin.

    // Statik sinifdə və ya digər əlçatan statik dəyişəndə
    public static String statikMəlumat;
    
    // Birinci Activity-də
    StaticDataHolder.statikMəlumat = "məlumat";
    
    // İkinci Activity-də
    String məlumat = StaticDataHolder.statikMəlumat;
    
  5. Verilənlər bazası/Fayl: Böyük həcmli məlumatlar və ya davamlı saxlanması lazım olan məlumatlar üçün. Məlumatlar SQLite, Room və ya faylda saxlanılır və ikinci Activity onları oxuyur.

  6. ViewModel (LiveData ilə birlikdə): Arxitektura komponentləri kontekstində, ViewModel UI ilə əlaqəli məlumatların idarə olunması üçün üstün üsuldur. Məlumatlar Activity-lər arasında paylaşılır və ya LiveData üzərindən hadisələrlə ötürülür.

    // Birinci Activity-də (Kotlin)
    val intent = Intent(this, SecondActivity::class.java).apply {
        putExtra("məlumat_açarı", "məlumat_dəyəri")
    }
    startActivity(intent)
    
    // İkinci Activity-də (Kotlin)
    val məlumat = intent.getStringExtra("məlumat_açarı")
    

Yöntə seçimi, ötürüləcək məlumatların tipi və həcmi, həmçinin davamiyyət tələblərinə bağlıdır. Intent Extras vasitəsilə məlumat ötürmə, kiçik həcmli məlumatlar və birbaşa Activity keçidləri üçün standartdır.