ภาพรวม
ตัวอย่างนี้สาธิตการนำทาง (Navigation) ระหว่างสอง Activity โดยใช้ Intent แบบ Explicit Intent
ขั้นตอนที่ 1: สร้างโปรเจกต์ใหม่
เปิด Android Studio เลือก File → New Project
ขั้นตอนที่ 2: Layout ของ MainActivity (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"
android:padding="16dp"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="40dp"
android:text="MainActivity"
android:textColor="@android:color/holo_purple"
android:textSize="24sp"
android:textStyle="bold" />
<Button
android:id="@+id/btnOpenAct2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Open Second Activity" />
</RelativeLayout>
ขั้นตอนที่ 3: 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 = "KotlinApp"
val button = findViewById<Button>(R.id.btnOpenAct2)
button.setOnClickListener {
val intent = Intent(this@MainActivity, NewActivity::class.java)
startActivity(intent)
}
}
}
ขั้นตอนที่ 4: สร้าง NewActivity
Layout (activity_new.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"
android:padding="16dp"
tools:context=".NewActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="40dp"
android:text="New Activity"
android:textColor="@android:color/holo_green_dark"
android:textSize="24sp"
android:textStyle="bold" />
<Button
android:id="@+id/btnOpenMain"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Go back to MainActivity" />
</RelativeLayout>
NewActivity.kt
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
class NewActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_new)
title = "KotlinApp"
val button = findViewById<Button>(R.id.btnOpenMain)
button.setOnClickListener {
val intent = Intent(this@NewActivity, MainActivity::class.java)
startActivity(intent)
}
}
}
ขั้นตอนที่ 5: Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="com.example.switchactivity">
<application ... >
<activity android:name=".MainActivity"> ... </activity>
<activity android:name=".NewActivity" />
</application>
</manifest>
แนวทางปฏิบัติที่ดีกว่า (Best Practices)
- หลีกเลี่ยงการสร้าง Activity ใหม่ซ้ำ: ใช้
Intent.FLAG_ACTIVITY_REORDER_TO_FRONTหรือFLAG_ACTIVITY_CLEAR_TOP - ส่งข้อมูลระหว่าง Activity: ใช้
intent.putExtra()และgetIntent().getIntExtra() - Navigation Component: ในโปรเจกต์ขนาดใหญ่ ควรใช้ Jetpack Navigation แทน Intent ตรงๆ
- Back Stack: กดปุ่ม Back จะกลับไป Activity ก่อนหน้าโดยอัตโนมัติ ไม่ต้องเขียนโค้ดเพิ่ม
การทดสอบ
รันแอป กดปุ่ม "Open Second Activity" จะไปหน้า NewActivity กด "Go back to MainActivity" จะกลับมาหน้าแรก