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

Kotlin-এ Intent দিয়ে অ্যাক্টিভিটির মধ্যে অবজেক্ট পাস করা (আরেক উদাহরণ)

ওভারভিউ

এই উদাহরণটি একটি কাস্টম Character অবজেক্ট (নাম, পেশা, পজিশন, অভিযোগ্যতা) Serializable করে দিয়ে পাস করার পদ্ধতি দেখায়।

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

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

ধাপ ২: 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" />
    
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Click here to pass object to Second Activity!" />
</RelativeLayout>

ধাপ ৩: MainActivity.kt

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

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "Object Pass Demo"
        
        val button = findViewById<Button>(R.id.button)
        button.setOnClickListener {
            val intent = Intent(this, SecondActivity::class.java)
            
            // Character অবজেক্ট তৈরি
            val sports = Character(
                name = "CR7",
                profession = "Football",
                position = "Left Winger",
                abilities = arrayOf("Best player in the World")
            )
            
            intent.putExtra("Character", sports)
            startActivity(intent)
        }
    }
}

// Serializable ডেটা ক্লাস
data class Character(
    var name: String,
    var profession: String,
    var position: String,
    var abilities: Array<String>
) : Serializable

ধাপ ৪: SecondActivity তৈরি

activity_second.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=".SecondActivity">
    
    <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="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textColor="@color/colorPrimaryDark"
        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 Object"
        
        val sports = intent.getSerializableExtra("Character") as Character?
        val textView = findViewById<TextView>(R.id.textView)
        
        sports?.let {
            textView.text = """
                ${it.name}
                ${it.profession}
                ${it.position}
                ${it.abilities.contentToString()}
            """.trimIndent()
        }
    }
}

⚡ উন্নত পদ্ধতি: @Parcelize (দ্রুত এবং আধুনিক)

build.gradle.kts এ kotlin-parcelize প্লাগইন যোগ করুন:

plugins {
    id("kotlin-parcelize")
}

পার্সেলেবল ডেটা ক্লাস:

@Parcelize
data class Character(
    val name: String,
    val profession: String,
    val position: String,
    val abilities: Array<String>
) : Parcelable

MainActivity-এ:

intent.putExtra("Character", sports) // অটোমেটিক Parcelable হ্যান্ডেল

SecondActivity-এ:

val sports = intent.getParcelableExtra<Character>("Character")

Parcelable vs Serializable

ফিচারSerializableParcelable (@Parcelize)
স্পিডধীর (রিফ্লেকশন)দ্রুত (নেটিভ)
কোড জটিলতাসহজঅটোমেটিক (এনটেশন)
গার্বেজবেশিকম
সুপারিশলিগ্যাসি/সিম্পল✅ আধুনিক অ্যাপের জন্য

বড় ডেটার জন্য বিকল্প

  • ViewModel + LiveData/Flow - শেয়ার্ড ইউআই স্টেট
  • Room Database - পারসিস্টেন্ট স্টোরেজ
  • DataStore/SharedPreferences - ছোট কনফিগ ডেটা
  1. অ্যান্ড্রয়েডে একটি অবজেক্ট এক এক্টিভিটি থেকে অন্য একে পাস করার পদ্ধতি

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

  3. অ্যান্ড্রয়েডে এক্টিভিটির থেকে ফ্র্যাগমেন্টে ভেরিয়েবল পাস করার পদ্ধতি

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