[修复] 隐藏标签时,进入软件后恢复上一次的分组定位 #348

This commit is contained in:
HapeLee
2025-11-30 13:26:04 +08:00
parent 883a9551c5
commit 8ec91efcc4
3 changed files with 18 additions and 14 deletions
@@ -71,7 +71,7 @@ class BookshelfFragment1() : BaseBookshelfFragment(R.layout.fragment_bookshelf1)
private fun initView() { private fun initView() {
adapter = TabFragmentPageAdapter(this) adapter = TabFragmentPageAdapter(this)
binding.viewPagerBookshelf.adapter = adapter binding.viewPagerBookshelf.adapter = adapter
binding.viewPagerBookshelf.offscreenPageLimit = 1 binding.viewPagerBookshelf.offscreenPageLimit = 3
TabLayoutMediator(binding.tabLayout, binding.viewPagerBookshelf) { tab, position -> TabLayoutMediator(binding.tabLayout, binding.viewPagerBookshelf) { tab, position ->
tab.text = bookGroups[position].groupName tab.text = bookGroups[position].groupName
@@ -26,7 +26,6 @@ import kotlin.collections.set
* 书架界面 * 书架界面
*/ */
class BookshelfFragment3() : BaseBookshelfFragment(R.layout.fragment_bookshelf3), class BookshelfFragment3() : BaseBookshelfFragment(R.layout.fragment_bookshelf3),
TabLayout.OnTabSelectedListener,
SearchView.OnQueryTextListener { SearchView.OnQueryTextListener {
constructor(position: Int) : this() { constructor(position: Int) : this() {
@@ -63,12 +62,13 @@ class BookshelfFragment3() : BaseBookshelfFragment(R.layout.fragment_bookshelf3)
private fun initView() { private fun initView() {
adapter = TabFragmentPageAdapter(this) adapter = TabFragmentPageAdapter(this)
binding.viewPagerBookshelf.adapter = adapter binding.viewPagerBookshelf.adapter = adapter
binding.viewPagerBookshelf.offscreenPageLimit = 1 binding.viewPagerBookshelf.offscreenPageLimit = 3
binding.viewPagerBookshelf.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { binding.viewPagerBookshelf.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) { override fun onPageSelected(position: Int) {
super.onPageSelected(position) super.onPageSelected(position)
updateToolbarTitle(position) updateToolbarTitle(position)
AppConfig.saveTabPosition = position
} }
}) })
} }
@@ -100,8 +100,8 @@ class BookshelfFragment3() : BaseBookshelfFragment(R.layout.fragment_bookshelf3)
adapter.notifyDataSetChanged() adapter.notifyDataSetChanged()
adapter = TabFragmentPageAdapter(this) adapter = TabFragmentPageAdapter(this)
binding.viewPagerBookshelf.adapter = adapter binding.viewPagerBookshelf.adapter = adapter
updateToolbarTitle(binding.viewPagerBookshelf.currentItem) updateToolbarTitle(binding.viewPagerBookshelf.currentItem)
selectLastTab()
} }
} }
} }
@@ -117,19 +117,23 @@ class BookshelfFragment3() : BaseBookshelfFragment(R.layout.fragment_bookshelf3)
} }
} }
override fun onTabReselected(tab: TabLayout.Tab) {
}
override fun onTabUnselected(tab: TabLayout.Tab) = Unit
override fun onTabSelected(tab: TabLayout.Tab) {
AppConfig.saveTabPosition = tab.position
}
override fun gotoTop() { override fun gotoTop() {
fragmentMap[groupId]?.gotoTop() fragmentMap[groupId]?.gotoTop()
} }
private fun selectLastTab() {
val lastPosition = AppConfig.saveTabPosition
if (lastPosition in 0 until bookGroups.size) {
binding.viewPagerBookshelf.post {
binding.viewPagerBookshelf.setCurrentItem(lastPosition, false)
updateToolbarTitle(lastPosition)
}
} else {
AppConfig.saveTabPosition = 0
updateToolbarTitle(0)
}
}
private inner class TabFragmentPageAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) { private inner class TabFragmentPageAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) {
override fun getItemCount(): Int = bookGroups.size override fun getItemCount(): Int = bookGroups.size
@@ -67,7 +67,7 @@ class BookshelfFragment4() : BaseBookshelfFragment(R.layout.fragment_bookshelf4)
private fun initView() { private fun initView() {
adapter = TabFragmentPageAdapter(this) adapter = TabFragmentPageAdapter(this)
binding.viewPagerBookshelf.adapter = adapter binding.viewPagerBookshelf.adapter = adapter
binding.viewPagerBookshelf.offscreenPageLimit = 1 binding.viewPagerBookshelf.offscreenPageLimit = 3
TabLayoutMediator(binding.tabLayout, binding.viewPagerBookshelf) { tab, position -> TabLayoutMediator(binding.tabLayout, binding.viewPagerBookshelf) { tab, position ->
tab.text = bookGroups[position].groupName tab.text = bookGroups[position].groupName