From 58ddd3c8cc8c428708fb1a76a9fe090b59c038bf Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Thu, 20 Mar 2025 14:08:21 +0100 Subject: [PATCH] fix #130 - revert part of 9043461 as ViewPager2 causes an issue with opening the keyboard --- .../android/launcher/ui/list/ListActivity.kt | 26 ++++++++++--------- app/src/main/res/layout/list.xml | 7 ++++- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/list/ListActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/list/ListActivity.kt index 59d83e5..fe27f0f 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/list/ListActivity.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/list/ListActivity.kt @@ -9,8 +9,7 @@ import android.window.OnBackInvokedDispatcher import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.content.res.AppCompatResources import androidx.fragment.app.Fragment -import androidx.viewpager2.adapter.FragmentStateAdapter -import com.google.android.material.tabs.TabLayoutMediator +import androidx.fragment.app.FragmentPagerAdapter import de.jrpie.android.launcher.Application import de.jrpie.android.launcher.R import de.jrpie.android.launcher.actions.LauncherAction @@ -225,13 +224,10 @@ class ListActivity : AppCompatActivity(), UIObject { updateTitle() val sectionsPagerAdapter = ListSectionsPagerAdapter(this) - binding.listViewpager.apply { - adapter = sectionsPagerAdapter - currentItem = 0 + binding.listViewpager.let { + it.adapter = sectionsPagerAdapter + binding.listTabs.setupWithViewPager(it) } - TabLayoutMediator(binding.listTabs, binding.listViewpager) { tab, position -> - tab.text = sectionsPagerAdapter.getPageTitle(position) - }.attach() } } @@ -243,11 +239,17 @@ private val TAB_TITLES = arrayOf( /** * The [ListSectionsPagerAdapter] returns the fragment, * which corresponds to the selected tab in [ListActivity]. + * + * This should eventually be replaced by a [FragmentStateAdapter] + * However this keyboard does not open when using [ViewPager2] + * so currently [ViewPager] is used here. + * https://github.com/jrpie/launcher/issues/130 */ +@Suppress("deprecation") class ListSectionsPagerAdapter(private val activity: ListActivity) : - FragmentStateAdapter(activity) { + FragmentPagerAdapter(activity.supportFragmentManager) { - override fun createFragment(position: Int): Fragment { + override fun getItem(position: Int): Fragment { return when (position) { 0 -> ListFragmentApps() 1 -> ListFragmentOther() @@ -255,11 +257,11 @@ class ListSectionsPagerAdapter(private val activity: ListActivity) : } } - fun getPageTitle(position: Int): CharSequence { + override fun getPageTitle(position: Int): CharSequence { return activity.resources.getString(TAB_TITLES[position]) } - override fun getItemCount(): Int { + override fun getCount(): Int { return when (activity.intention) { ListActivity.ListActivityIntention.VIEW -> 1 else -> 2 diff --git a/app/src/main/res/layout/list.xml b/app/src/main/res/layout/list.xml index 45bcb85..8a3b5d9 100644 --- a/app/src/main/res/layout/list.xml +++ b/app/src/main/res/layout/list.xml @@ -95,7 +95,12 @@ - +