我正在编写一个简单的优惠券应用程序,但是最近我更新了一些依赖项,并且我的Fragment
不允许允许我return null
错误照片:
package com.szakes1.makdolannative.adapters
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentStatePagerAdapter
import com.szakes1.makdolannative.R
import com.szakes1.makdolannative.fragments.CouponFragment
import com.szakes1.makdolannative.fragments.HomeFragment
class ViewPagerAdapter(fm: FragmentManager, private val numberOfFrags: Int) : FragmentStatePagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
override fun getItem(position: Int): Fragment? {
when (position) {
0 -> return HomeFragment()
1 -> return CouponFragment(R.drawable.coupon_hamburger)
2 -> return CouponFragment(R.drawable.coupon_icecream)
3 -> return CouponFragment(R.drawable.coupon_cheeseburger)
4 -> return CouponFragment(R.drawable.coupon_fries)
}
return null
}
override fun getCount(): Int {
return numberOfFrags
}
override fun getPageTitle(position: Int): CharSequence? {
when (position) {
0 -> return "Jak używać?"
1 -> return "Hamburger"
2 -> return "Lody"
3 -> return "Cheeseburger"
4 -> return "Małe frytki"
}
return super.getPageTitle(position)
}
}
答案 0 :(得分:3)
由于超级方法在FragmentStatePagerAdapter
中的定义如下:
@NonNull
public abstract Fragment getItem(int position);
因此,您的重写方法中不能有可为空的内容
override fun getItem(position: Int): Fragment {
最后,不要从null
函数返回getItem(..)
。相反,抛出异常
override fun getItem(position: Int): Fragment {
when (position) {
.....
}
throw IllegalStateException("position $position is invalid for this viewpager")
}
答案 1 :(得分:1)
通过内部的fun getItem(position: Int)
方法
when(position) {
//In these brackets
}
只需删除return null
然后在4 -> return "Małe frytki"
下面添加以下行:
else -> {throw IllegalStateException("$position is illegal") }