根據您的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
!感謝您的幫助 –