Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
📋 Screens, Lists और Navigation  ·  Lesson 21

Activities के बीच Data भेजें

Extras से simple values भेजें

Intent key–value pairs ले जा सकता है जिन्हें extras कहते हैं: String, Int, Boolean, Double, arrays और Parcelable objects।

Kotlin – sender
// MainActivity.kt
binding.btnOpen.setOnClickListener {
    val intent = Intent(this, ProfileActivity::class.java).apply {
        putExtra("name", "Riya Sharma")
        putExtra("marks", 92)
        putExtra("isTopper", true)
    }
    startActivity(intent)
}

दूसरी screen में पढ़ें

Kotlin – receiver
// ProfileActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityProfileBinding.inflate(layoutInflater)
    setContentView(binding.root)

    val name = intent.getStringExtra("name") ?: "Unknown"     // String? → default
    val marks = intent.getIntExtra("marks", 0)               // default if missing
    val isTopper = intent.getBooleanExtra("isTopper", false)

    binding.tvName.text = name
    binding.tvMarks.text = "Marks: $marks"
    binding.tvBadge.isVisible = isTopper
}
9:41▮▮ 85%Students⋮RRiya Sharma92 marksAAman Verma88 marksSSara Khan81 marks9:41▮▮ 85%←Profile⋮Riya SharmaMarks: 92🏆 Topper
Student tap करो → ProfileActivity extras पढ़ती है

Keys एक जगह रखें

Kotlin – companion object factory
class ProfileActivity : AppCompatActivity() {
    companion object {
        const val EXTRA_NAME = "extra_name"
        const val EXTRA_MARKS = "extra_marks"

        // a "factory" – callers cannot forget a key
        fun newIntent(context: Context, name: String, marks: Int) =
            Intent(context, ProfileActivity::class.java)
                .putExtra(EXTRA_NAME, name)
                .putExtra(EXTRA_MARKS, marks)
    }
}

// caller
startActivity(ProfileActivity.newIntent(this, "Riya Sharma", 92))

पूरा object भेजें (@Parcelize)

Kotlin DSL – plugin enable करें
// app/build.gradle.kts
plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android)
    id("kotlin-parcelize")                 // add this line
}
Kotlin
import android.os.Parcelable
import kotlinx.parcelize.Parcelize

@Parcelize
data class Student(val id: Int, val name: String, val marks: Int, val city: String) : Parcelable

// send
val student = Student(7, "Aman Verma", 88, "Aligarh")
startActivity(Intent(this, ProfileActivity::class.java).putExtra("student", student))

// receive (API 33+ has a type-safe version; IntentCompat works on all versions)
val s: Student? = IntentCompat.getParcelableExtra(intent, "student", Student::class.java)
binding.tvName.text = s?.name

Result वापस पाएँ

Kotlin – Activity Result API
// MainActivity – open the editor and wait for the new name
private val editName = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
    if (result.resultCode == RESULT_OK) {
        val newName = result.data?.getStringExtra("new_name")
        binding.tvName.text = newName
    }
}

binding.btnEdit.setOnClickListener {
    editName.launch(Intent(this, EditNameActivity::class.java).putExtra("old_name", binding.tvName.text.toString()))
}

// EditNameActivity – send the result back
binding.etName.setText(intent.getStringExtra("old_name"))
binding.btnSave.setOnClickListener {
    val data = Intent().putExtra("new_name", binding.etName.text.toString())
    setResult(RESULT_OK, data)
    finish()
}

पूरा round trip

MainActivityEditNameActivitylaunch(intent + old_name)user name edit करता हैsetResult(RESULT_OK, new_name) + finish()callback: tvName update
Data आगे भेजो, result वापस लो

आम गलतियाँ

  • Key में typo ("Name" vs "name") → value null। Constants use करें।
  • गलत type से extras पढ़ना (Int के लिए getStringExtra) → null/default।
  • Click listener के अंदर registerForActivityResult call करना → crash; इसे property की तरह register करें (Activity start होने से पहले)।
  • बड़ी lists/bitmaps भेजना → TransactionTooLargeException।

सारांश

  • putExtra(key, value) → getXxxExtra(key, default)।
  • Objects: @Parcelize data class … : Parcelable।
  • Results: registerForActivityResult + setResult + finish()।
✅ Practice

3 students की list बनाइए। किसी एक पर tap करने से Parcelable Student के साथ ProfileActivity खुले। "Edit marks" button जोड़िए जो नए marks list screen को लौटाए।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

क्या startActivityForResult अब भी use होता है?
यह deprecated है। ActivityResultContracts.StartActivityForResult (या कोई specific contract) के साथ registerForActivityResult use करें। यह lifecycle-safe और test करने में आसान है।
क्या Intent से बड़ी list भेज सकते हैं?
नहीं। Intent bundle की size limit है (लगभग 1 MB shared)। एक id भेजें और अगली screen में database या shared ViewModel से data load करें।
Parcelable या Serializable?
Android पर Parcelable तेज़ है और kotlin-parcelize plugin के साथ सिर्फ़ एक annotation चाहिए। इसे ही use करें।
← Android Tutorial (Kotlin)
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

अगला topicRecyclerView (Lists) आपकी प्रगति: 21 / 43 (49%) · Lesson 22 / 43 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें