Sobes.tech
Junior

როგორ გადავცეთ მონაცემები ერთ აქტივობიდან მეორეში Android-ში?

sobes.tech AI

პასუხი AI-სგან

მონაცემებს შეიძლება გადმოცემა Intent-ის გამოყენებით:

  1. მომწოდებელი Activity-ში: განათავსეთ მონაცემები Extras Intent-ში მეთოდებით putExtra(String key, value):

    // Intent-ის მომზადება
    val intent = Intent(this, TargetActivity::class.java)
    // მონაცემების დამატება
    intent.putExtra("myString", "გამარჯობა პირველი Activity-დან")
    intent.putExtra("myInt", 123)
    intent.putExtra("myBool", true)
    // შესაძლებელია გადაცემა ობიექტების, რომლებიც რეალიზებენ Parcelable ან Serializable
    // intent.putExtra("myObject", myParcelableObject)
    
    // ახალი Activity-ის გაშვება
    startActivity(intent)
    
  2. მიზნობრივი Activity-ში: ამოიღეთ მონაცემები Extras Intent-დან, რომელიც მიიღეთ onCreate ან onNewIntent მეთოდში:

    // `onCreate()`-ში მიზნობრივი Activity-ის
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_target)
    
        // მიიღეთ Intent, რომელიც ამოქმედა ამ Activity-ით
        val intent = intent
    
        // მონაცემების ამოღება გასაღებით
        val myString = intent.getStringExtra("myString")
        val myInt = intent.getIntExtra("myInt", 0) // მეორე არგუმენტი - დეფოლტ მნიშვნელობა
        val myBool = intent.getBooleanExtra("myBool", false)
    
        // მიღებული მონაცემების დამუშავება
        println("მიღებული სტრიქონი: $myString")
        println("მიღებული რიცხვი: $myInt")
        println("მიღებული ბულიანი: $myBool")
    
        // Parcelable ან Serializable ობიექტებისთვის
        // val myObject = intent.getParcelableExtra<MyParcelableClass>("myObject")
    }
    

სხვა მეთოდები მონაცემების გადაცემისთვის, რომლებიც უფრო რთული სცენარებისთვის ან დიდი მოცულობის მონაცემებისთვისაა განკუთვნილი:

  • ViewModel-ის გაზიარება Fragment-ებს/Activities-ებს შორის (SharedViewModel-ის საშუალებით): ხელსაყრელია საერთო მონაცემებისთვის დაკავშირებულ კომპონენტებს შორის.
  • Bundle (Extras Intent-ში): putExtra რეალურად იყენებს Bundle-ს შიგნით.
  • სტატიკური ცვლადები/სინგლტონები: ყურადღებით უნდა გამოიყენოთ, შეიძლება გამოიწვიოს მეხსიერების გაჟონვა და მდგომარეობის პრობლემები.
  • მონაცემთა ბაზა/SharedPreferences: მუდმივი შენახვის ან მონაცემების გადაცემისთვის, რომლებიც საჭიროებენ შენახვას.
  • Event Bus (მაგ., EventBus, RxJava): მოვლენების ან მონაცემების გადაცემა ასინქრონულად.
  • ფაილური I/O: შენახვა ფაილში და წაკითხვა მისგან.