Android Jetpack navigationUI, как передать данные для просмотра фрагмента пейджера - PullRequest
0 голосов
/ 24 февраля 2019

Я впервые работаю с Navigation UI Architecture Component

Я пытаюсь использовать ViewPager с ним.Я хотел передать аргумент фрагментам, которые добавляются в viewpager

Я не нашел решения, связанного с viewpager

Мой код

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]
    }
}

Мой график навигации

  • MasterFragment -> содержит TabLayout, ViewPager

  • pass section keyв ListFragment через FragmentPagerAdapter

  • ListFragment -> показывает API-ответ на основе section ключ

  • DetailsFragmenst

1 Ответ

0 голосов
/ 25 февраля 2019

Вы можете передавать данные в экземпляре фрагмента:

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]
 }
}

Вы должны управлять viewPager как старый метод с архитектурой навигации в соответствии с этим ответом.

...