Почему основанный на фрагментах viewPager.setCurrentItem не работает внутри адаптера? - PullRequest
0 голосов
/ 19 июня 2019

У меня есть фрагмент в MainActivity, который обрабатывает другие фрагменты на странице просмотра. Это тот самый:

class FragOrdersHolder : Fragment() {

    lateinit var viewPager: ViewPager

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
    ): View? {
        val mainView = inflater.inflate(R.layout.orders_holder_frg, container, false)
        return mainView
    }

    override fun onViewCreated(mainView: View, savedInstanceState: Bundle?) {
        super.onViewCreated(mainView, savedInstanceState)

        viewPager = mainView.findViewById(R.id.ordersViewPagerID)

        viewPager.adapter = OrdersPagerAdapter(activity!!.supportFragmentManager)

        val pagerTab = mainView.findViewById<PagerTabStrip>(R.id.pagerHeaderID)
        pagerTab.tabIndicatorColor = Color.WHITE
        pagerTab.setTextColor(Color.WHITE)
    }

    fun GoTo(pos: Int) {
        Handler().post(Runnable {
            viewPager.setCurrentItem(pos, true)
        })
    }
}

У меня есть 3 фрагмента в моем viewPager и один из них, внутри которого есть обзор переработчика.

просмотрщик имеет пользовательский класс адаптера.

Я хочу перейти к следующему нажатию в viewPager при нажатии на элемент в обзоре recyler.

Я вызываю метод GoTo в классе адаптера следующим образом:

val fm = (activity as MainActivity).supportFragmentManager
val fragm = fm.findFragmentByTag("HOLDER") as FragOrdersHolder
fragm.GoTo(2)

Я попробовал все, что viewPager.setCurrentItem не работает! Помогите мне, пожалуйста.

...