如何解决导航返回时带有 ViewPager 刷新的 TabLayout
我在第一个屏幕和第二个屏幕上都有选项卡,我的输入字段在提交后返回到第一个屏幕。但是当我返回第一个屏幕时,第一个选项卡的 recyclerview 中的数据没有更新。但是当我转到第二个选项卡然后返回到第一个选项卡时,数据会重新呈现。当我从第二个屏幕导航回来时,我想重新呈现第一个选项卡。我的带有 ViewPager 的 TabLayout 在 Fragment 中,我还检查了 onViewCreated 中的代码在第一次打开 Screen 时运行,甚至在它从第二个屏幕导航回来后运行,但它对第一个选项卡内的 recyclerview 没有影响。
onViewCreated 中的 TabLayout:
override fun onCreate(savedInstanceState: Bundle?) {
tabLayout = findViewById<TabLayout>(R.id.tabLayout)
viewPager = findViewById<ViewPager>(R.id.viewPager)
tabLayout!!.addTab(tabLayout!!.newTab().setText("Home"))
tabLayout!!.addTab(tabLayout!!.newTab().setText("Sport"))
tabLayout!!.addTab(tabLayout!!.newTab().setText("Movie"))
tabLayout!!.tabGravity = TabLayout.GRAVITY_FILL
val adapter = MyAdapter(this,supportFragmentManager,tabLayout!!.tabCount)
viewPager!!.adapter = adapter
viewPager!!.addOnPageChangeListener(TabLayout.TabLayoutOnPageChangeListener(tabLayout))
tabLayout!!.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab) {
viewPager!!.currentItem = tab.position
}
override fun onTabUnselected(tab: TabLayout.Tab) {
}
override fun onTabReselected(tab: TabLayout.Tab) {
}
})
}
我的 ViewPager 适配器:
class MyAdapter(private val myContext: Context,fm: FragmentManager,internal var totalTabs: Int) : FragmentPagerAdapter(fm) {
// this is for fragment tabs
override fun getItem(position: Int): Fragment? {
when (position) {
0 -> {
// val homeFragment: HomeFragment = HomeFragment()
return HomeFragment()
}
1 -> {
return SportFragment()
}
2 -> {
// val movieFragment = MovieFragment()
return MovieFragment()
}
else -> return null
}
}
// this counts total number of tabs
override fun getCount(): Int {
return totalTabs
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。