我在第一个屏幕上有选项卡,在第二个屏幕上有输入字段,在提交后返回到第一个屏幕。但当我返回到第一个屏幕时,第一个选项卡的recyclerview中的数据不会更新。但是,当我转到第二个选项卡,然后返回到第一个选项卡时,数据会重新提交。当我从第二个屏幕返回时,我想重新启动第一个选项卡。我的带有viewpager的tablayout是一个片段,我还检查了我在ViewCreated中的代码是否在屏幕第一次打开时运行,甚至在它从第二个屏幕导航回来后运行,但它对第一个选项卡中的recyclerview没有影响。
onviewcreated中的表格布局:
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
}
}
暂无答案!
目前还没有任何答案,快来回答吧!