【发布时间】:2020-11-30 18:06:40
【问题描述】:
当我启动包含带有 TabLayout 的 NavigationDrawer 的活动时,会出现一个错误报告,指出 viewPager 不能为空。 这是发生错误的代码,在 viewPager.adapter = adapter ...的行中...
希望有人能告诉我如何解决这个问题。
我在想我需要一种方法来创建这些片段
class fragment_nav_home : Fragment() {
private fun setUpTabs() {
val adapter = ViewPagerAdapter(childFragmentManager)
adapter.addFragment(fragment_tab_artists(), "Artists")
adapter.addFragment(fragment_tab_agencies(), "Agencies")
viewPager.adapter = adapter
tabs.setupWithViewPager(viewPager)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setUpTabs()
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
// setUpTabs()
return inflater.inflate(R.layout.fragment_nav_home, container, false)
}
}
函数 addFragment 来自下一个 Kotlin 类
class ViewPagerAdapter(supportFragmentManager: FragmentManager) :
FragmentPagerAdapter(supportFragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
private val lstFragments = ArrayList<Fragment>();
private val lstFragmentsTitles = ArrayList<String>();
override fun getCount(): Int {
return lstFragments.size
}
override fun getItem(i: Int): Fragment {
return lstFragments[i]
}
override fun getPageTitle(i: Int): CharSequence? {
return lstFragmentsTitles[i]
}
fun addFragment(fragment: Fragment, title: String) {
lstFragments.add(fragment)
lstFragmentsTitles.add(title)
}
}
【问题讨论】:
标签: android kotlin fragment adapter