带viewpager刷新的tablayout向后导航

9avjhtql  于 2021-08-25  发布在  Java
关注(0)|答案(0)|浏览(233)

我在第一个屏幕上有选项卡,在第二个屏幕上有输入字段,在提交后返回到第一个屏幕。但当我返回到第一个屏幕时,第一个选项卡的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  
    }  
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题