Как добавить viewPager для перелистывания фрагментов без добавления активности - PullRequest
0 голосов
/ 29 февраля 2020

Я занимаюсь разработкой приложения Kotlin, и в какой-то момент я хочу реализовать viewPager для пролистывания между фрагментами. У меня есть одно действие, чтобы перейти к остальной части приложения через график навигации. Я не совсем понял, как этот свип должен работать.

У меня вопрос, нужно ли мне также реализовать новое действие помимо pageAdapter? И как эта деятельность будет взаимодействовать с основной? Мое приложение в настоящее время имеет экран Spla sh, и после этого я хотел бы иметь режим смахивания между фрагментами.

Ответы [ 2 ]

2 голосов
/ 29 февраля 2020

Я хочу реализовать viewPager для пролистывания между фрагментами.

nice

У меня есть одно действие, чтобы перейти к остальной части приложения через навигацию график.

круто

мне нужно также реализовать новое действие помимо 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)
    }
}
1 голос
/ 10 апреля 2020

Попробуйте это

в вашем viewPager

 class pageradapter (fm: FragmentManager) : FragmentStatePagerAdapter(fm){
override fun getItem(position: Int): Fragment {
    when(position){
        0-> return fragment1()
        1-> return fragment2() // you can add more if you have more fragments
        else-> return fragment3()

    }
}
override fun getCount(): Int {
    return 3   
 number of fragments that you have so the swiping could work
}

в ваших фрагментах 1 или 2 или 3 ... et c '

 class fragment1 : Fragment() {


override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                          savedInstanceState: Bundle?): View? {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment1, container, false)
// write your codes 
}

в вашей деятельности после экрана spla sh

class MainActivity : AppCompatActivity(){

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main4)

    val adapter = pageradapter(supportFragmentManager)
    val pager = findViewById<View>(R.id.pager) as ViewPager
    pager.adapter = adapter

}
...