Android Kotlin中的片段类型不匹配

Pet*_*and 2 tabs android type-mismatch android-fragments kotlin

我一步一步地尝试在Kotlin/Android中创建一个简单的标签布局.我发现很多教程都让我非常沮丧,因为他们要么工作,要么工程设计过于难以看清楚发生了什么,或者2)似乎没有工作.

这是案例2)非常接近工作的情况之一,但有一些错误.我已经确定了问题,但我不确定如何解决它.

http://www.techotopia.com/index.php/Kotlin_-_Creating_a_Tabbed_Interface_using_the_TabLayout_Component

我完全按照教程中的所有内容,我得到的唯一错误是这部分:

package com.ebookfrenzy.tablayoutdemo

import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
import android.support.v4.app.FragmentPagerAdapter

class TabPagerAdapter(fm: FragmentManager, private var tabCount: Int) : 
            FragmentPagerAdapter(fm) {

    override fun getItem(position: Int): Fragment? {

        when (position) {
            0 -> return Tab1Fragment()
            1 -> return Tab2Fragment()
            2 -> return Tab3Fragment()
            3 -> return Tab4Fragment()
            else -> return null
        }
    }

    override fun getCount(): Int {
        return tabCount
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的是Tab1Fragment(), Tab2...所有不Fragment属于返回类型的类型fun getItem.这很令人困惑,因为它们是这样声明的类:

class Tab1Fragment : Fragment()

看起来它对我来说应该没问题.

这是我看到的一张照片,以防有人不相信我.

https://imgur.com/a/XvZaP

有人可以告知发生了什么事吗?

Sri*_*m R 5

您的代码中有两个可能的错误

您的片段扩展android.support.v4.app.Fragment,getItem()适配器中的方法返回,android.app.Fragment反之亦然.

在任何情况下,确保您的片段和适配器方法最好返回相同的类型,android.support.v4.app.Fragment并且您很高兴.