Sobes.tech
Junior

Androidда бир активитиден экинчи активитиге маалыматтарды кантип өткөрүү керек?

sobes.tech AI

AIден жооп

Маълумотту Intent аркылуу өткөрүү мүмкүн:

  1. Баштапкы Activityте: Маалыматты putExtra(String key, value) аркылуу Extras Intentке салыңыз.

    // 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те: onCreate же onNewIntent методунда алынган Extras Intentтен маалыматтарды чыгарыңыз.

    // Максаттуу Activityтин onCreate()сында
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_target)
    
        // Бул Activityти иштеткен Intentти алыңыз
        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 менен бөлүшүү (SharedViewModel аркылуу): Байланышкан компоненттердин ортосунда жалпы маалымат үчүн ыңгайлуу.
  • Bundle (Extras Intent ичинде): putExtra чынжырда Bundle колдонулат.
  • Статикалык өзгөрмөлөр/синглтондар: Эскертүү менен колдонуу керек, эс тутумду агызуу жана абал маселелерин алып келиши мүмкүн.
  • Маалымат базасы/SharedPreferences: Туруктуу сактоо же өткөрүү үчүн, сакталуучу маалыматтар үчүн.
  • Event Bus (мисалы, EventBus, RxJava): Окуялар же маалыматтарды асинхрон түрдө өткөрүү үчүн.
  • Файлдык I/O: Файлга сактоо жана андан окуу.