ตอนที่ 7 Android Studio Kotlin fragments คืออะไร

Android Studio Kotlin เป็นภาษาการรับทำแอพขั้นสูงและไดนามิกซึ่งกลายเป็นตัวเลือกยอดนิยมสำหรับการทำแอพ Android องค์ประกอบที่สำคัญอย่างหนึ่งของการทำแอพ Android ที่ใช้ Kotlin คือ Fragments ในบทความนี้ เราจะเจาะลึกแนวคิดของ Fragment และสำรวจวิธีการใช้พวกมันเพื่อสร้างส่วนต่อประสานผู้ใช้ (UI) แบบโมดูลาร์และปรับเปลี่ยนได้สำหรับการทำแอพ Android Studio

1. ทำความเข้าใจกับ Fragments

Fragment คือส่วนประกอบ UI แบบโมดูลาร์ที่นำกลับมาใช้ใหม่ได้ ซึ่งแสดงถึงส่วนหนึ่งของ UI หรือพฤติกรรมของแอปพลิเคชัน ส่วนย่อยช่วยให้การทำแอพสามารถสร้างการออกแบบ UI ที่ยืดหยุ่นและตอบสนองได้ ซึ่งสามารถปรับให้เข้ากับขนาดหน้าจอและการวางแนวต่างๆ ช่วยให้คุณสร้างและจัดการองค์ประกอบ UI หลายอย่างภายในกิจกรรมเดียว ทำให้การทำแอพของคุณเป็นระเบียบและมีประสิทธิภาพมากขึ้น

2. Fragment Lifecycle

เช่นเดียวกับกิจกรรม Fragments มีวิธีการวงจรชีวิต (Lifecycle) ที่กำหนดพฤติกรรมในแต่ละช่วง การทำความเข้าใจวงจรชีวิตของ Fragment เป็นสิ่งสำคัญในการจัดการสถานะและรับประกันประสบการณ์การใช้งานที่ราบรื่น วิธีการวงจรชีวิตที่สำคัญ ได้แก่ :

  • onAttach(): เรียกใช้เมื่อ Fragment เชื่อมโยงกับกิจกรรมโฮสต์
  • onCreate(): เรียกเมื่อมีการสร้าง Fragment เป็นครั้งแรก
  • onCreateView(): ถูกเรียกเพื่อสร้างลำดับชั้นมุมมองของ Fragment
  • onActivityCreated(): เรียกใช้เมื่อกิจกรรมโฮสต์เสร็จสิ้นเมธอด onCreate()
  • onStart(): เรียกใช้เมื่อ Fragment ปรากฏให้เห็น
  • onResume(): เรียกใช้เมื่อ Fragment อยู่เบื้องหน้าและทำงานอยู่
  • onPause(): เรียกใช้เมื่อ Fragment ไม่ทำงานอีกต่อไป
  • onStop(): เรียกใช้เมื่อ Fragment ไม่สามารถมองเห็นได้อีกต่อไป
  • onDestroyView(): ถูกเรียกใช้เมื่อลำดับชั้นมุมมองของ Fragment กำลังถูกทำลาย
  • onDestroy(): ถูกเรียกใช้ก่อนที่ Fragment จะถูกทำลาย
  • onDetach(): เรียกใช้เมื่อ Fragment ถูกแยกออกจากกิจกรรมโฮสต์

3. การเพิ่ม Fragments ให้กับกิจกรรม (Activity)

มีสองวิธีหลักในการเพิ่ม Fragment ให้กับกิจกรรม: แบบคงที่หรือแบบไดนามิก

3.1. Static Fragment

หากต้องการเพิ่ม Fragment แบบคงที่ ให้ประกาศภายในไฟล์โครงร่าง XML ของกิจกรรมโฮสต์ วิธีนี้เหมาะสำหรับกรณีที่การมีอยู่ของ Fragment คงที่ตลอดวงจรชีวิตของกิจกรรม

ตัวอย่าง:

<fragment
    android:id="@+id/your_fragment"
    android:name="com.example.yourapp.YourFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
3.2. Dynamic Fragment

หากต้องการเพิ่ม Fragment แบบไดนามิก ให้ใช้ FragmentManager และ FragmentTransaction API วิธีนี้ช่วยให้คุณเพิ่ม ลบ และแทนที่ Fragments ระหว่างรันไทม์ได้ ซึ่งให้ความยืดหยุ่นมากขึ้น

ตัวอย่าง:

val fragmentManager = supportFragmentManager
val fragmentTransaction = fragmentManager.beginTransaction()

val yourFragment = YourFragment()
fragmentTransaction.add(R.id.fragment_container, yourFragment)
fragmentTransaction.commit()

4. การสื่อสารระหว่างแฟรกเมนต์และกิจกรรม

เพื่ออำนวยความสะดวกในการสื่อสารระหว่างแฟรกเมนต์และกิจกรรมโฮสต์ คุณสามารถใช้อินเทอร์เฟซ สร้างอินเทอร์เฟซแบบกำหนดเองใน Fragment นำไปใช้ในกิจกรรมโฮสต์ และใช้การโทรกลับเพื่อส่งข้อมูลระหว่างกัน

ตัวอย่าง:

ในแฟรกเมนต์ของคุณ:

interface OnFragmentInteractionListener {
    fun onFragmentInteraction(data: String)
}

private var listener: OnFragmentInteractionListener? = null

override fun onAttach(context: Context) {
    super.onAttach(context)
    if (context is OnFragmentInteractionListener) {
        listener = context
    } else {
        throw RuntimeException("$context must implement OnFragmentInteractionListener")
    }
}

private fun sendDataToActivity(data: String) {
    listener?.onFragmentInteraction(data)
}

ในกิจกรรมของคุณ:

class YourActivity : AppCompatActivity(), YourFragment.OnFragmentInteractionListener {

    override fun onFragmentInteraction(data: String) {
        // Handle the data received from the Fragment
    }
}

5. การใช้แฟรกเมนต์สำหรับการสร้าง UI

แฟรกเมนต์มีบทบาทสำคัญในการสร้าง UI ที่ปรับเปลี่ยนได้และเป็นโมดูลสำหรับแอปพลิเคชัน Android ช่วยให้คุณสร้างและจัดการส่วนประกอบ UI หลายรายการภายในกิจกรรมเดียว ทำให้มีโครงสร้างแอพพลิเคชันที่เป็นระเบียบและมีประสิทธิภาพมากขึ้น แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้ Fragments ในกระบวนการสร้าง UI มีดังนี้

5.1. ออกแบบเพื่อการนำกลับมาใช้ใหม่

เมื่อออกแบบ Fragments ให้มุ่งสร้างส่วนประกอบแบบแยกส่วนและนำกลับมาใช้ใหม่ได้ ซึ่งสามารถรวมเข้ากับส่วนต่างๆ ของแอปพลิเคชันของคุณได้อย่างง่ายดาย วิธีการนี้จะช่วยให้คุณรักษา UI ที่สอดคล้องกันและปรับปรุงกระบวนการพัฒนา

5.2. จัดการการเปลี่ยนแปลงการกำหนดค่า

เพื่อให้แน่ใจว่าผู้ใช้จะได้รับประสบการณ์ที่ราบรื่น ให้จัดการการเปลี่ยนแปลงการกำหนดค่า (เช่น การเปลี่ยนแปลงการวางแนวหน้าจอ) ภายใน Fragments ของคุณ แทนที่เมธอด onSaveInstanceState() เพื่อบันทึกสถานะของ Fragment และกู้คืนโดยใช้เมธอด onCreate() หรือ onCreateView()

5.3. ใช้ชิ้นส่วนที่ซ้อนกัน

Nested Fragments ช่วยให้คุณสามารถฝัง Fragment ไว้ใน Fragment อื่นได้ ทำให้สามารถสร้างโครงสร้าง UI ที่ซับซ้อนและเป็นลำดับชั้นได้ วิธีการนี้ช่วยให้คุณจัดการส่วนประกอบ UI ที่เกี่ยวข้องร่วมกัน ทำให้ง่ายต่อการบำรุงรักษาและอัปเดตแอปของคุณ

ตัวอย่าง:

val childFragmentManager = childFragmentManager
val fragmentTransaction = childFragmentManager.beginTransaction()

val nestedFragment = NestedFragment()
fragmentTransaction.add(R.id.nested_fragment_container, nestedFragment)
fragmentTransaction.commit()
5.4. ใช้เค้าโครงที่ตอบสนอง

หากต้องการสร้าง UI ที่ตอบสนองตามอุปกรณ์ที่ปรับให้เข้ากับขนาดหน้าจอและการวางแนวต่างๆ ให้ใช้ Fragments ร่วมกับตัวจัดการเค้าโครง เช่น LinearLayout, RelativeLayout หรือ ConstraintLayout นอกจากนี้ ใช้ตัวระบุทรัพยากรของ Android Studio เพื่อจัดเตรียมเลย์เอาต์และขนาดทางเลือกสำหรับการกำหนดค่าหน้าจอต่างๆ

Fragments เป็นเครื่องมืออันทรงพลังสำหรับสร้าง UI แบบแยกส่วนและปรับเปลี่ยนได้ใน Android Studio Kotlin การทำความเข้าใจวงจรชีวิตของ Fragments และใช้อย่างมีประสิทธิภาพในการออกแบบส่วนประกอบ UI ที่ใช้ซ้ำได้จะช่วยเพิ่มประสบการณ์ผู้ใช้และการบำรุงรักษาแอพพลิเคชัน Android Studio ของคุณได้อย่างมาก ด้วยการใช้เค้าโครงที่ตอบสนองและจัดการการสื่อสารระหว่าง Fragments และกิจกรรม คุณสามารถสร้างแอปพลิเคชันแบบไดนามิก ยืดหยุ่น และเป็นมิตรกับผู้ใช้ซึ่งรองรับอุปกรณ์และการกำหนดค่าที่หลากหลาย

เขียนแอพ Android Studio

ตอนที่ 6 Android Studio Kotlin activities และ intents คืออะไร
ตอนที่ 8 Android Studio Kotlin บันทึกข้อมูลโดยใช้ SharedPreferences