前言
今天的文章内容是关于ViewPager的,很多同学可能会吐槽:怎么还写这种“低级”的内容!为什么?因为绝大多数的同学都用错了,当然这主要的原因是搜索引擎推出来的文章大多都是错的!
正文
一、错误用法
不知道有多少同学是这样用ViewPager的?
class TestViewPagerActivity : BaseActivity() {
private lateinit var adapter: ViewPagerAdapter
private val fragments = mutableListOf<Fragment>().apply {
add(TestFragment1.newInstance("页面-1"))
add(TestFragment2.newInstance("页面-2"))
add(TestFragment3.newInstance("页面-3"))
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_test_view_pager)
adapter = ViewPagerAdapter(fragmentData, supportFragmentManager)
vp.adapter = adapter
}
inner class ViewPagerAdapter(val fragments: List<Fragment>, fm: FragmentManager) : FragmentPagerAdapter(fm) {
override fun getItem(position: Int): Fragment {
return fragments[position]
}
override fun getCount(): Int {
return fragments.size
}
}
}
如果看到这的同学觉得这个用法没什么问题。那么毫无疑问这篇文章你必须要读一读,因为上述的用法完全曲解的Fragment在ViewPager中的应用。
二、正确用法
我猜有同学可能有疑问了,那正确用法是什么样呢?
当然有同学反驳:凭什么你说你的写法是对的呢?这还用问吗?还不是因为我大!!!....Google的文档了:ViewPager
class TestViewPagerActivity : BaseActivity() {
private lateinit var adapter: ViewPagerAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_test_view_pager)
adapter = ViewPagerAdapter(fragmentData, supportFragmentManager)