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

Kotlin ব্যবহার করে Android-এ বাটন ক্লিক করে নতুন অ্যাক্টিভিটি শুরু করা

ওভারভিউ

এই বেসিক টিউটোরিয়ালে দেখানো হয়েছে কিভাবে একটি বাটনে ক্লিক লিসেনার যোগ করে নতুন অ্যাক্টিভিটি (SecondActivity) লঞ্চ করা যায়।

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

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

ধাপ ২: activity_main.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"
    android:padding="16dp">
    
    <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="Navigation Demo"
        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:background="@android:color/background_dark"
        android:padding="16dp"
        android:text="Open New Activity"
        android:textColor="@color/colorAccent"
        android:textSize="18sp"
        android:textStyle="bold" />
</RelativeLayout>

ধাপ ৩: MainActivity.kt

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

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "Main Activity"
        
        val button = findViewById<Button>(R.id.button)
        button.setOnClickListener {
            val intent = Intent(this, SecondActivity::class.java)
            startActivity(intent)
        }
    }
}

ধাপ ৪: 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"
    android:padding="16dp">
    
    <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="Navigation Demo"
        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:text="Welcome to Second Activity!"
        android:textAlignment="center"
        android:textColor="@android:color/holo_blue_dark"
        android:textSize="24sp"
        android:textStyle="bold" />
</RelativeLayout>

SecondActivity.kt

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

class SecondActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)
        title = "Second Activity"
    }
}

ধাপ ৫: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.navigationdemo">
    
    <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>

ইন্টেন্টের প্রকারভেদ

প্রকারব্যবহারউদাহরণ
Explicit Intentনির্দিষ্ট কম্পোনেন্ট (অ্যাক্টিভিটি/সার্ভিস)`Intent(this, SecondActivity::class.java)`
Implicit Intentঅ্যাকশন/ডেটা/টাইপ (সিস্টেম উপযুক্ত অ্যাপ খুঁজে বের করে)`Intent(Intent.ACTION_VIEW, Uri.parse("https://example.com"))`

ইন্টেন্টে ডেটা পাস করা

val intent = Intent(this, DetailActivity::class.java).apply {
    putExtra("user_id", 123)
    putExtra("user_name", "John Doe")
    putExtra("is_premium", true)
    putStringArrayListExtra("tags", arrayListOf("android", "kotlin"))
}

// রিসিভিং সাইডে:
val userId = intent.getIntExtra("user_id", -1)
val userName = intent.getStringExtra("user_name") ?: ""
val isPremium = intent.getBooleanExtra("is_premium", false)
val tags = intent.getStringArrayListExtra("tags") ?: emptyList()

ফলাফল পাওয়ার জন্য: startActivityForResult (ডিপ্রিকেটেড) → Activity Result API

// MainActivity-এ (Modern API)
private val startActivityForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
    if (result.resultCode == RESULT_OK) {
        val data = result.data
        val returnedValue = data?.getStringExtra("result_key")
    }
}

// লঞ্চ:
startActivityForResult.launch(Intent(this, SecondActivity::class.java))

ফ্ল্যাগস (সাধারণ)

  • FLAG_ACTIVITY_NEW_TASK - নতুন টাস্কে শুরু
  • FLAG_ACTIVITY_CLEAR_TOP - টাস্কের টপে থাকলে ক্লিয়ার করে ওটায় আনে
  • FLAG_ACTIVITY_SINGLE_TOP - টপে একই হলে নতুন ইনস্ট্যান্স বানাবে না
  • FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_NEW_TASK - পুরো টাস্ক ক্লিয়ার করে নতুন (লগইন után হোমে যাওয়ার মতো)
  1. অ্যান্ড্রয়েডে SaveInstanceState ব্যবহার করে এক্টিভিটি স্টেট সংরক্ষণ

  2. অ্যান্ড্রয়েডে বাটন ক্লিক করলে নতুন এক্টিভিটি শুরু করার পদ্ধতি

  3. অ্যান্ড্রয়েড এক্টিভিটিতে ব্যাক বাটন হ্যান্ডল করার পদ্ধতি

  4. অ্যান্ড্রয়েডে Activity.finish() কীভাবে কাজ করে