@@ -81,13 +81,12 @@ class MainActivity : AppCompatActivity() {
8181 // ========================
8282 private fun loadTabs () {
8383 lifecycleScope.launch(Dispatchers .IO ) {
84- val pages = getItems(krScriptConfig.pageListConfig)
8584 val favorites = getItems(krScriptConfig.favoriteConfig)
86-
85+ val pages = getItems(krScriptConfig.pageListConfig)
86+
8787 withContext(Dispatchers .Main ) {
88- progressBarDialog.hideDialog()
8988 adapter = MainPagerAdapter (this @MainActivity)
90-
89+
9190 if (! favorites.isNullOrEmpty()) {
9291 adapter.addFragment(
9392 ActionListFragment .create(
@@ -99,7 +98,7 @@ class MainActivity : AppCompatActivity() {
9998 getString(R .string.tab_favorites)
10099 )
101100 }
102-
101+
103102 if (! pages.isNullOrEmpty()) {
104103 adapter.addFragment(
105104 ActionListFragment .create(
@@ -111,23 +110,21 @@ class MainActivity : AppCompatActivity() {
111110 getString(R .string.tab_pages)
112111 )
113112 }
114-
113+
115114 binding.viewPager.adapter = adapter
116-
115+
117116 val tabHelper = TabIconHelper (this @MainActivity)
118117 TabLayoutMediator (binding.tabLayout, binding.viewPager) { tab, position ->
119118 val title = adapter.getTitle(position)
120- val iconRes = if (title == getString(R .string.tab_favorites))
121- R .drawable.tab_favorites else R .drawable.tab_pages
122-
119+ val iconRes = if (title == getString(R .string.tab_favorites)) R .drawable.tab_favorites else R .drawable.tab_pages
123120 getDrawable(iconRes)?.let {
124121 tab.customView = tabHelper.createTabView(title, it, position == 0 )
125122 } ? : run { tab.text = title }
126123 }.attach()
127-
128- isFavoritesTab = binding.tabLayout.getTabAt(binding.tabLayout.selectedTabPosition)?.text ==
129- getString( R .string.tab_favorites )
130-
124+
125+ // luôn đặt tab mặc định
126+ binding.tabLayout.getTabAt( 0 )?.select( )
127+
131128 binding.tabLayout.addOnTabSelectedListener(object : TabLayout .OnTabSelectedListener {
132129 override fun onTabSelected (tab : TabLayout .Tab ) {
133130 isFavoritesTab = adapter.getTitle(tab.position) == getString(R .string.tab_favorites)
@@ -140,48 +137,37 @@ class MainActivity : AppCompatActivity() {
140137 }
141138 }
142139 }
143-
144- private fun getItems (pageNode : PageNode ): ArrayList <NodeInfoBase >? {
145- var items: ArrayList <NodeInfoBase >? = null
146- if (pageNode.pageConfigSh.isNotEmpty())
147- items = PageConfigSh (this , pageNode.pageConfigSh, null ).execute()
148- if (items == null && pageNode.pageConfigPath.isNotEmpty())
149- items = PageConfigReader (this .applicationContext, pageNode.pageConfigPath, null ).readConfigXml()
150- return items
151- }
152-
153- // ========================
154- // RELOAD TABS
155- // ========================
140+
141+ // reloadTabs vẫn như cũ, tạo fragment mới mỗi lần
156142 private fun reloadTabs () {
143+ val position = if (isFavoritesTab) 0 else 1
144+ val pageNode = if (isFavoritesTab) krScriptConfig.favoriteConfig else krScriptConfig.pageListConfig
145+
157146 lifecycleScope.launch(Dispatchers .IO ) {
158- val favorites = getItems(krScriptConfig.favoriteConfig)
159- val pages = getItems(krScriptConfig.pageListConfig)
160-
161- withContext(Dispatchers .Main ) {
162- favorites?.let {
163- val favFragment = ActionListFragment .create(
147+ val items = getItems(pageNode)
148+ items?.let {
149+ withContext(Dispatchers .Main ) {
150+ val newFragment = ActionListFragment .create(
164151 it,
165- getKrScriptActionHandler(krScriptConfig.favoriteConfig, true ),
152+ getKrScriptActionHandler(pageNode, isFavoritesTab ),
166153 null ,
167154 ThemeModeState .getThemeMode()
168155 )
169- adapter.updateFragment(0 , favFragment)
170- }
171-
172- pages?.let {
173- val pageFragment = ActionListFragment .create(
174- it,
175- getKrScriptActionHandler(krScriptConfig.pageListConfig, false ),
176- null ,
177- ThemeModeState .getThemeMode()
178- )
179- adapter.updateFragment(1 , pageFragment)
156+ adapter.updateFragment(position, newFragment)
180157 }
181158 }
182159 }
183160 }
184161
162+ private fun getItems (pageNode : PageNode ): ArrayList <NodeInfoBase >? {
163+ var items: ArrayList <NodeInfoBase >? = null
164+ if (pageNode.pageConfigSh.isNotEmpty())
165+ items = PageConfigSh (this , pageNode.pageConfigSh, null ).execute()
166+ if (items == null && pageNode.pageConfigPath.isNotEmpty())
167+ items = PageConfigReader (this .applicationContext, pageNode.pageConfigPath, null ).readConfigXml()
168+ return items
169+ }
170+
185171 // ========================
186172 private fun restartApp () {
187173 val intent = Intent (this , SplashActivity ::class .java)
0 commit comments