为什么基于片段的viewPager.setCurrentItem在适配器内部不起作用?

时间:2019-06-19 02:58:58

标签: android kotlin android-viewpager

我在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)
        })
    }
}

我的viewPager中有3个片段,其中一个片段,里面有一个recyclerview。

recyclerview有一个自定义适配器类。

当我在recylerview中单击一个项目时,我想转到viewPager中的下一个水龙头。

我正在像这样在适配器类中调用GoTo方法:

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

我已经尝试了所有viewPager.setCurrentItem无法正常工作! 请帮我。

0 个答案:

没有答案