根据您的GitHub上项目,要实现以错误的方式Fragment
实例。 当你invoque var fragment = MainActivityFragment()
,你创建你的片段的新实例,但没有提供arguments
,所以,当你的片段onCreate
方法被调用时,参数是null
,这就是你的应用程序崩溃的原因。
要解决您的应用程序崩溃,你需要实现以下方法片段实例:
MainActivityFragment(编辑)
// Wrap new instance function inside companion object
companion object {
// newInstance constructor for creating fragment with arguments
fun newInstance(page: Int, title: String): MainActivityFragment {
val fragmentFirst = MainActivityFragment()
val args = Bundle()
args.putInt("someInt", page)
args.putString("someTitle", title)
fragmentFirst.arguments = args
return fragmentFirst
}
}
//...
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if(null != this.arguments) {
page = this.arguments.getInt("someInt", 1)
title = this.arguments.getString("someTitle")
}
}
MyPagerAdapter
override fun getItem(position: Int): Fragment? {
when (position) {
0 // Fragment # 0 - Ensure to return a new fragment instance with valid arguments
-> return MainActivityFragment.newInstance(0, "Page # 1")
1 // Fragment # 0 - This will show FirstFragment different title
-> return SecondFragment.newInstance(1, "Page # 2")
else -> return null
}
}
不要忘记以包装SecondFragmentnewInstance
伴侣对象内的功能。
感谢您的回答我更改了项目,但由于这里出现空指针异常,应用程序一直崩溃“page = this.arguments.getInt(”someInt“,0)”。如果我做了一些错误的更改,我推动了我的更改。我还在我的content_main.xml中添加了片段 –
@JohannesGnadlinger删除包含的content_main布局,这将导致现在它工作的相同问题 – AlexTa
!感谢您的帮助 –