![](/img/trans.png)
[英]NullPointerException when using Kotlin ViewBinding inside Fragment
[英]NullPointerException At Creating view with fragment inside fragment Kotlin
當我啟動包含帶有 TabLayout 的 NavigationDrawer 的活動時,它會出現一個錯誤報告,指出 viewPager 不能是 null。 這是發生錯誤的代碼,在 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
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)
}
}
您的viewPager
變量是 null,因此您不能在其上設置adapter
屬性,因為null
沒有。
你在哪里設置viewPager
? 看起來您沒有使用視圖綁定庫,因此您需要執行viewPager = findViewById(R.id.viewPager)
或其他任何操作,例如在onCreateView
:
val view = inflater.inflate(R.layout.fragment_nav_home, container, false)
viewPager = view.findViewById(R.id.viewPager)
return view
或者如果您使用的是 Kotlin 合成(其中布局中的 ID 被轉換為具有相同名稱的變量,因此您可以訪問視圖而無需查找它們):
import kotlinx.android.synthetic.main.fragment_nav_home.*
在這種情況下,您需要在ViewPager
布局中使用 ID 為“viewPager”的 ViewPager。
現在它是 null 因為你沒有分配它,或者它不存在(如果它被自動分配)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.