@@ -18,7 +18,19 @@ class MainPagerAdapter(activity: AppCompatActivity) : FragmentStateAdapter(activ
1818 fun addFragment (fragment : Fragment , title : String ) {
1919 fragments.add(fragment)
2020 titles.add(title)
21- ids.add(nextId++ ) // đảm bảo ID không trùng
21+ ids.add(nextId++ )
22+ notifyDataSetChanged()
23+ }
24+
25+ /* *
26+ * Cập nhật fragment tại vị trí, tạo fragment mới (reload)
27+ */
28+ fun updateFragment (position : Int , fragment : Fragment ) {
29+ if (position in fragments.indices) {
30+ fragments[position] = fragment
31+ // giữ ID cũ để ViewPager2 không recreate fragment sai
32+ notifyItemChanged(position)
33+ }
2234 }
2335
2436 /* *
@@ -36,37 +48,27 @@ class MainPagerAdapter(activity: AppCompatActivity) : FragmentStateAdapter(activ
3648 /* *
3749 * Lấy title tab
3850 */
39- fun getTitle (position : Int ): String {
40- return titles[position]
41- }
51+ fun getTitle (position : Int ): String = titles[position]
4252
4353 /* *
4454 * Lấy fragment hiện tại (để updateData)
4555 */
46- fun getFragment (position : Int ): Fragment {
47- return fragments[position]
48- }
56+ fun getFragment (position : Int ): Fragment = fragments[position]
4957
5058 /* *
5159 * Tìm vị trí tab theo title
5260 */
53- fun getTitleIndex (title : String ): Int {
54- return titles.indexOf(title)
55- }
61+ fun getTitleIndex (title : String ): Int = titles.indexOf(title)
5662
5763 /* *
5864 * ID ổn định cho ViewPager2 (tránh recreate fragment)
5965 */
60- override fun getItemId (position : Int ): Long {
61- return ids[position]
62- }
66+ override fun getItemId (position : Int ): Long = ids[position]
6367
6468 /* *
6569 * Kiểm tra fragment còn tồn tại
6670 */
67- override fun containsItem (itemId : Long ): Boolean {
68- return ids.contains(itemId)
69- }
71+ override fun containsItem (itemId : Long ): Boolean = ids.contains(itemId)
7072
7173 /* *
7274 * Xoá toàn bộ tab (nếu cần reload lại toàn bộ)
@@ -76,5 +78,6 @@ class MainPagerAdapter(activity: AppCompatActivity) : FragmentStateAdapter(activ
7678 titles.clear()
7779 ids.clear()
7880 nextId = 0L
81+ notifyDataSetChanged()
7982 }
8083}
0 commit comments