Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

एंड्रॉइड में कोटलिन का उपयोग करके सेकेंडरी एक्टिविटी से मेन एक्टिविटी में डेटा कैसे भेजें?

एंड्रॉइड में एक्टिविटी के बीच डेटा पास करना

यह उदाहरण दर्शाता है कि 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: इंटेंट कॉन्फ़िगरेशन के लिए क्लीन कोड
  • दूसरी एक्टिविटी मैनिफेस्ट में घोषित: मूल कोड में गायब था
  1. Android में पिछली Activity पर वापस जाने से कैसे रोकें? Android में पिछली Activity पर वापस जाने से कैसे रोकें?

    ऐसी कई स्थितियां होती हैं जहां हमें बैक बटन दबाने पर वापस जाने की कार्रवाई नहीं करनी चाहिए। बैक बटन एक्शन को अक्षम करने का उदाहरण चरण 1 - नया प्रोजेक्ट बनाएं Android Studio में एक नया प्रोजेक्ट बनाएं: File → New Project पर जाएं और आवश्यक विवरण भरें। चरण 2 - लेआउट XML में कोड जोड़ें res/layout/act

  1. - एंड्रॉइड में पिछली एक्टिविटी को डेटा कैसे वापस भेजें?

    startActivityForResult के साथ रिजल्ट वापस करना जब दूसरी एक्टिविटी से पहली एक्टिविटी में डेटा वापस भेजना हो, तो startActivityForResult() और onActivityResult() का उपयोग करें। नोट: एंड्रॉइड X में यह डिप्रिकेटेड है; आधुनिक ऐप्स में Activity Result API (registerForActivityResult) उपयोग करें। चरण 1: नया

  1. Android में दूसरी एक्टिविटी से मुख्य एक्टिविटी में डेटा कैसे भेजें? Android में दूसरी एक्टिविटी से मुख्य एक्टिविटी में डेटा कैसे भेजें?

    startActivityForResult से डेटा वापस भेजना यह उदाहरण दर्शाता है कि startActivityForResult() और onActivityResult() का उपयोग करके दूसरी एक्टिविटी से मुख्य एक्टिविटी में डेटा कैसे वापस भेजें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: मुख्य लेआउट (activity_main.xml)