1

I am first time working with Navigation UI Architecture Component

I am trying to use ViewPager with it. I wanted to pass argument to Fragments that's is added to viewpager

I didn't found any solution related to viewpager

My code

class StoriesPagerAdapter(fragmentManager: FragmentManager?)
    :FragmentPagerAdapter(fragmentManager){

    private val sections= arrayListOf("science","technology","business","world","movies","travel")

    override fun getItem(position: Int): Fragment {

        val bundle=Bundle()
        bundle.putString("section",sections[position])
        Navigation.createNavigateOnClickListener(R.id.action_masterFragment_to_timesListFragment,bundle)
        return TimesListFragment()
    }

    override fun getCount(): Int {

        return sections.size

    }


    override fun getPageTitle(position: Int): CharSequence? {
        return sections[position]
    }
}

My navigation graph

  • MasterFragment -> contains TabLayout , ViewPager

  • passes section key to ListFragment via FragmentPagerAdapter

  • ListFragment -> shows api response based on section key

  • DetailsFragmenst

Bruno Martins
  • 1,347
  • 2
  • 11
  • 32
karthik kolanji
  • 2,044
  • 5
  • 20
  • 56

1 Answers1

0

You can pass data in fragment instance:

class StoriesPagerAdapter(fragmentManager: FragmentManager?)
:FragmentPagerAdapter(fragmentManager){

private val sections= arrayListOf("science","technology","business","world","movies","travel")

override fun getItem(position: Int): Fragment {
    return TimesListFragment().newInstance(sections)
}

override fun getCount(): Int {

    return sections.size

}


override fun getPageTitle(position: Int): CharSequence? {
    return sections[position]
 }
}

You have to manage viewPager like old method with navigation architecture according to this answer.

Hussnain Haidar
  • 2,200
  • 19
  • 30
  • When I made navigation graph "return TimesListFragment().newInstance(sections)" doesn't makes any difference . It expects the data to be passed via Navigation UI way. – karthik kolanji Feb 25 '19 at 06:34