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: Ֆայլում պահել և կարդալ: