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("Boolean-и гирифташуда: $myBool")
    
        // Барои объектҳои Parcelable ё Serializable
        // val myObject = intent.getParcelableExtra<MyParcelableClass>("myObject")
    }
    

Дигар усулҳои интиқоли маълумот, ки барои сценарияҳои мураккаб ё ҳаҷми калонтар мувофиқанд:

  • ViewModel-и умумӣ байни Fragmentҳо/Activities (бо истифода аз SharedViewModel): Барои маълумоти умумӣ байни компонентҳои пайваст.
  • Bundle (дар дохили Extras Intent): putExtra дар асл Bundle-ро дар дохили истифода мебарад.
  • Параметрҳои статикӣ/синглтонҳо: Инҳоро бо эҳтиёт истифода бурдан лозим аст, метавонанд ба дарунравии хотира ва мушкилоти ҳолат оварда расонанд.
  • Маълумотхои базаи додаҳо/SharedPreferences: Барои нигоҳдории доимӣ ё интиқоли маълумотҳое, ки ниёз ба нигоҳдорӣ доранд.
  • Event Bus (масалан, EventBus, RxJava): Барои интиқоли рӯйдодҳо ё маълумот байни компонентҳо дар режими асинхрон.
  • File I/O: Дар файл нигоҳ доштан ва аз он хондан.