首页 > 解决方案 > 如何在不添加活动的情况下添加用于在片段之间滑动的 viewPager

问题描述

我正在开发一个 Kotlin 应用程序,并且在某些时候我想实现 viewPager 在片段之间滑动。我有一项活动可以通过导航图导航到应用程序的其余部分。我还没有真正理解这种刷卡应该如何工作。

我的问题是,除了 pageAdapter 之外,我还需要实现一个新活动吗?这个活动将如何与主要活动合作?我的应用程序目前有一个启动画面,之后我想在片段之间使用滑动模式。

标签: androidandroid-fragmentskotlinandroid-viewpagerviewpage

解决方案


我想实现 viewPager 在片段之间滑动。

好的

我有一项活动可以通过导航图导航到应用程序的其余部分。

凉爽的

除了pageAdapter,我还需要实现一个新活动吗?

这个活动将如何与主要活动合作?

没有第二个活动,那就不需要“合作”

我想在片段之间使用滑动模式。

https://gist.github.com/Zhuinden/c643f03a023a9cbe83fff6c75c948d3b

class MyFragmentPagerAdapter(
    private val context: Context,
    fragmentManager: FragmentManager
) : FragmentPagerAdapter(fragmentManager) {
    override fun getCount() = 2

    override fun getItem(position: Int) = when(position) {
        0 -> FirstFragment()
        1 -> SecondFragment()
        else -> throw IllegalStateException("Unexpected position $position")
    }

    override fun getPageTitle(position: Int): CharSequence = when(position) {
        0 -> context.getString(R.string.first)
        1 -> context.getString(R.string.second)
        else -> throw IllegalStateException("Unexpected position $position")
    }
}

class ParentFragment: Fragment() {
    override fun onCreateView(...) = ...

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        val viewPager = view.findViewById(R.id.view_pager)
        viewPager.adapter = MyFragmentPagerAdapter(requireContext(), childFragmentManager)
        tabLayout.setupWithViewPager(viewPager)
    }
}

推荐阅读