কম্পিউটার টিউটোরিয়াল

Kotlin-এ Intent ব্যবহার করে অ্যাক্টিভিটির মধ্যে অবজেক্ট পাস করা

ওভারভিউ

এই টিউটোরিয়ালে দেখানো হয়েছে কিভাবে Kotlin-এ Serializable ইন্টারফেস ব্যবহার করে একটি কাস্টম অবজেক্ট এক অ্যাক্টিভিটি থেকে অন্য অ্যাক্টিভিটিতে পাস করা যায়।

প্রয়োজনীয় ধাপসমূহ

ধাপ ১: নতুন প্রজেক্ট তৈরি

Android Studio-এ নতুন প্রজেক্ট তৈরি করুন।

ধাপ ২: activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context=".MainActivity">
    
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="70dp"
        android:background="#008080"
        android:padding="5dp"
        android:text="TutorialsPoint"
        android:textColor="#fff"
        android:textSize="24sp"
        android:textStyle="bold" />
    
    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:hint="Enter your Message" />
    
    <Button
        android:id="@+id/btnSendObj"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/editText"
        android:layout_centerInParent="true"
        android:layout_marginTop="15dp"
        android:text="Send Obj to 2nd Activity" />
</RelativeLayout>

ধাপ ৩: MainActivity.kt

import android.content.Intent
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import androidx.appcompat.app.AppCompatActivity
import java.io.Serializable

class MainActivity : AppCompatActivity() {
    private lateinit var editText: EditText
    private lateinit var button: Button
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "Object Passing Demo"
        
        editText = findViewById(R.id.editText)
        button = findViewById(R.id.btnSendObj)
        
        button.setOnClickListener {
            val intent = Intent(this@MainActivity, SecondActivity::class.java)
            val message = Message().apply {
                setMessage(editText.text.toString())
            }
            intent.putExtra("message", message)
            startActivity(intent)
        }
    }
    
    // Serializable ক্লাস
    class Message : Serializable {
        @Serial
        private var message: String? = null
        
        override fun toString(): String = message ?: ""
        
        fun setMessage(message: String?) {
            this.message = message
        }
        
        companion object {
            private const val serialVersionUID = 1L
        }
    }
}

ধাপ ৪: SecondActivity তৈরি

activity_second.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="70dp"
        android:background="#008080"
        android:padding="5dp"
        android:text="TutorialsPoint"
        android:textColor="#fff"
        android:textSize="24sp"
        android:textStyle="bold" />
    
    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textAlignment="center"
        android:textColor="@android:color/holo_purple"
        android:textSize="24sp"
        android:textStyle="bold" />
</RelativeLayout>

SecondActivity.kt

import android.os.Bundle
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity

class SecondActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)
        title = "Received Data"
        
        val textView = findViewById<TextView>(R.id.textView)
        val message = intent.getSerializableExtra("message") as Message?
        textView.text = message.toString()
    }
}

ধাপ ৫: AndroidManifest.xml

দুইটি অ্যাক্টিভিটি রেজিস্টার করুন। স্ট্যান্ডার্ড কনফিগারেশন যথেষ্ট।

আধুনিক এবং ভালো পদ্ধতি: Parcelable বা Data Class

Serializable রিফ্লেকশন ব্যবহার করে যা ধীর। বর্তমানে Parcelable বা @Parcelize এনটেশন (Kotlin Android Extensions) ব্যবহার করা প্রস্তাবিত:

@Parcelize
data class Message(val message: String) : Parcelable

এছাড়া বড় ডেটার জন্য Intent-এর বদলে ViewModel, Room Database, বা SharedPreferences ব্যবহার করা উচিত।

  1. অ্যান্ড্রয়েডে একটি অবজেক্ট এক এক্টিভিটি থেকে অন্য একে পাস করার পদ্ধতি

  2. অ্যান্ড্রয়েডে ইন্টেন্ট ব্যবহার করে একটি এক্টিভিটির থেকে অন্য এক্টিভিটিতে অবজেক্ট পাঠানোর পদ্ধতি

  3. অ্যান্ড্রয়েডে একটি ইমেজ এক्टीভিটি থেকে অন্য এক्टीভিটিতে পাস করার পদ্ধতি

  4. Android-এ একটি ফ্র্যাগমেন্ট থেকে অন্য ফ্র্যাগমেন্টে ডেটা পাস করার পদ্ধতি