एंड्रॉइड में एक्टिविटी के बीच डेटा पास करना
यह उदाहरण दर्शाता है कि startActivityForResult (या आधुनिक Activity Result API) का उपयोग करके दूसरी एक्टिविटी से मुख्य एक्टिविटी में डेटा कैसे वापस भेजा जाए।
चरण 1: नया प्रोजेक्ट बनाएं
एंड्रॉइड स्टूडियो में File → New Project चुनें।
चरण 2: MainActivity लेआउट (activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="16dp"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:layout_marginBottom="20dp"
android:text="Tutorials Point"
android:textAlignment="center"
android:textColor="@android:color/holo_green_dark"
android:textSize="32sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textViewResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="परिणाम: "
android:textColor="@android:color/black"
android:textSize="24sp"
android:textStyle="bold" />
<EditText
android:id="@+id/editTextNumber1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:hint="पहली संख्या दर्ज करें"
android:inputType="number" />
<EditText
android:id="@+id/editTextNumber2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:hint="दूसरी संख्या दर्ज करें"
android:inputType="number" />
<Button
android:id="@+id/btnOpenActivity2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="सेकेंड एक्टिविटी खोलें" />
</LinearLayout>
चरण 3: MainActivity.kt (आधुनिक Activity Result API)
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
private lateinit var textViewResult: TextView
private lateinit var editTextNumber1: EditText
private lateinit var editTextNumber2: EditText
private lateinit var button: Button
// आधुनिक Activity Result API
private val secondActivityResultLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result ->
if (result.resultCode == Activity.RESULT_OK) {
val data = result.data
val resultValue = data?.getIntExtra("result", 0) ?: 0
textViewResult.text = "परिणाम: $resultValue"
} else {
textViewResult.text = "कुछ भी चयनित नहीं"
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "KotlinApp"
textViewResult = findViewById(R.id.textViewResult)
editTextNumber1 = findViewById(R.id.editTextNumber1)
editTextNumber2 = findViewById(R.id.editTextNumber2)
button = findViewById(R.id.btnOpenActivity2)
button.setOnClickListener {
val num1Str = editTextNumber1.text.toString()
val num2Str = editTextNumber2.text.toString()
if (num1Str.isEmpty() || num2Str.isEmpty()) {
Toast.makeText(this, "कृपया दोनों संख्याएं दर्ज करें", Toast.LENGTH_SHORT).show()
return@setOnClickListener
}
val number1 = num1Str.toInt()
val number2 = num2Str.toInt()
val intent = Intent(this, SecondActivity::class.java).apply {
putExtra("number1", number1)
putExtra("number2", number2)
}
secondActivityResultLauncher.launch(intent)
}
}
}
चरण 4: SecondActivity लेआउट (activity_second.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="16dp"
tools:context=".SecondActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:layout_marginBottom="20dp"
android:text="Tutorials Point"
android:textAlignment="center"
android:textColor="@android:color/holo_green_dark"
android:textSize="32sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textViewNumbers"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="संख्याएं: "
android:textColor="@android:color/black"
android:textSize="24sp"
android:textStyle="bold" />
<Button
android:id="@+id/buttonAdd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="जोड़ें (+)" />
<Button
android:id="@+id/buttonSubtract"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="घटाएं (-)" />
</LinearLayout>
चरण 5: SecondActivity.kt
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
class SecondActivity : AppCompatActivity() {
private lateinit var textViewNumber: TextView
private lateinit var buttonAdd: Button
private lateinit var buttonSubtract: Button
private var number1 = 0
private var number2 = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
// इंटेंट से डेटा प्राप्त करें
number1 = intent.getIntExtra("number1", 0)
number2 = intent.getIntExtra("number2", 0)
textViewNumber = findViewById(R.id.textViewNumbers)
textViewNumber.text = "संख्याएं: $number1, $number2"
buttonAdd = findViewById(R.id.buttonAdd)
buttonSubtract = findViewById(R.id.buttonSubtract)
buttonAdd.setOnClickListener {
val result = number1 + number2
returnResult(result)
}
buttonSubtract.setOnClickListener {
val result = number1 - number2
returnResult(result)
}
}
private fun returnResult(result: Int) {
val resultIntent = Intent().apply {
putExtra("result", result)
}
setResult(Activity.RESULT_OK, resultIntent)
finish()
}
}
चरण 6: AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="com.example.activityresult">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity" />
</application>
</manifest>
महत्वपूर्ण सुधार:
- Activity Result API: अप्रचलित
startActivityForResultके बजाय आधुनिक API का उपयोग - Null Safety: कोटलिन की नल सुरक्षा का लाभ उठाया गया
- Apply Scope Function: इंटेंट कॉन्फ़िगरेशन के लिए क्लीन कोड
- दूसरी एक्टिविटी मैनिफेस्ट में घोषित: मूल कोड में गायब था