ওভারভিউ
এই বেসিক টিউটোরিয়ালে দেখানো হয়েছে কিভাবে একটি বাটনে ক্লিক লিসেনার যোগ করে নতুন অ্যাক্টিভিটি (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 হোমে যাওয়ার মতো)