© Khmer Angkor Academy - sophearithput168

Fragment

Fragment អ្វីជា?

Fragment គឺជា UI component មួយដែលតំណាងឱ្យផ្នែកមួយនៃ Activity។ Fragment មានលក្ខណៈដូច "sub-activity" ដែលអាច reuse បាននៅក្នុង Activities ផ្សេងៗ។

🎯 ហេតុអ្វីត្រូវប្រើ Fragment?

ប្រយោជន៍ ពិពណ៌នា
Reusability អាចប្រើ Fragment តែមួយនៅក្នុង Activities ច្រើន
Modularity ចែក UI ជាផ្នែកតូចៗ ងាយគ្រប់គ្រង
Adaptability ងាយស្រួលប្រែប្រួល UI សម្រាប់ screen sizes ផ្សេងៗ
Navigation ជួយក្នុងការធ្វើ navigation complex

🔄 Fragment Lifecycle

┌────────────────┐
│   onAttach()   │  ──► Fragment attached ទៅ Activity
└────────┬───────┘
         │
┌────────▼───────┐
│   onCreate()   │  ──► Fragment បង្កើត
└────────┬───────┘
         │
┌────────▼───────────┐
│ onCreateView()     │  ──► បង្កើត UI layout
└────────┬───────────┘
         │
┌────────▼───────────┐
│ onViewCreated()    │  ──► View បង្កើតរួច (initialize views)
└────────┬───────────┘
         │
┌────────▼───────┐
│  onStart()     │  ──► Fragment visible
└────────┬───────┘
         │
┌────────▼───────┐
│  onResume()    │  ──► Fragment active
└────────┬───────┘
         │
      [Running]
         │
┌────────▼───────┐
│  onPause()     │  ──► Fragment paused
└────────┬───────┘
         │
┌────────▼───────┐
│  onStop()      │  ──► Fragment stopped
└────────┬───────┘
         │
┌────────▼────────────┐
│ onDestroyView()     │  ──► បំផ្លាញ View
└────────┬────────────┘
         │
┌────────▼───────┐
│ onDestroy()    │  ──► បំផ្លាញ Fragment
└────────┬───────┘
         │
┌────────▼───────┐
│  onDetach()    │  ──► Fragment detached ពី Activity
└────────────────┘

💻 បង្កើត Fragment

Java Code
Click "Run" to execute the Java code

📄 Fragment Layout (fragment_example.xml)

Java Code
Click "Run" to execute the Java code

🔗 បន្ថែម Fragment ទៅ Activity

មានវិធី 2 ក្នុងការបន្ថែម Fragment ទៅ Activity:

1️⃣ Static Fragment (នៅក្នុង XML)

Java Code
Click "Run" to execute the Java code

2️⃣ Dynamic Fragment (នៅក្នុង Java - Recommended)

Java Code
Click "Run" to execute the Java code

🔄 Fragment Transaction

Fragment Transactions ប្រើសម្រាប់ add, remove, replace fragments:

Operation ពិពណ៌នា
add() បន្ថែម Fragment ថ្មី
replace() ជំនួស Fragment មានស្រាប់
remove() យក Fragment ចេញ
addToBackStack() បន្ថែមទៅ back stack (អាចចុច back)
commit() អនុវត្ត transaction

📡 ផ្ញើទិន្នន័យរវាង Fragment និង Activity

ពី Activity ទៅ Fragment:

Java Code
Click "Run" to execute the Java code

ពី Fragment ទៅ Activity:

Java Code
Click "Run" to execute the Java code

💡 Best Practice: ប្រើ Interface សម្រាប់ communication រវាង Fragment និង Activity ដើម្បី loose coupling!

✅ Fragment Best Practices

  1. ប្រើ newInstance() method សម្រាប់បង្កើត Fragment ជាមួយ arguments
  2. មិនត្រូវ pass Activity context ទៅ Fragment constructor
  3. ប្រើ getActivity() ដើម្បីទទួល Activity context
  4. Check getActivity() != null មុនពេលប្រើ Activity methods
  5. សម្អាត resources នៅក្នុង onDestroyView()