android - 返回类型 'getItem' 不是被覆盖成员的返回类型的子类型

标签 android kotlin

我正在编写一个简单的优惠券应用程序,但最近我更新了一些依赖项和我的 Fragment不允许我 return null
错误照片:
error

error2

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)
    }
}

最佳答案

因为 super 方法定义在 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")
}

关于android - 返回类型 'getItem' 不是被覆盖成员的返回类型的子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58819456/

相关文章:

Android AccessibilityManager getEnabledAccessibilityServiceList 在某些情况下返回空列表

android - 获取运行时异常列 data2 无效?

android - "Uploaded a Debuggable APK"至 Google Play

java - 从 Java 访问 Kotlin 类对象

java.awt.HeadlessException 从 Kotlin REPL 启动 JavaFX 应用程序

android - 如何在 Android 中使用 webservice 将图像上传到服务器?

java - 将时分字符串时间转换为 utc,反之亦然

android - 如何使除了我在 RecyclerView 中单击的项目之外的所有项目都不可见?

java - 智能转换不可能,因为实例是可变属性

arrays - ByteArray在Kotlin中 float