我将逐步尝试在 Kotlin/Android 中创建一个简单的选项卡布局。我对我发现的许多教程感到非常沮丧,因为它们要么 1) 有效,但设计过度,很难看清发生了什么,要么 2) 似乎不起作用。
这是情况 2) 中的一个,非常接近工作,但有问题。我已确定问题所在,但不确定如何解决。
我的所有内容都与教程中的完全一样,我遇到的唯一错误是在这部分:
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
}
}
我得到 Tab1Fragment(), Tab2...
都不是 Fragment
类型,它是 fun getItem
的返回类型.这很令人困惑,因为它们是这样声明的类:
类 Tab1Fragment : Fragment()
这对我来说应该没问题。
这是我所看到的图片,以防有人不相信我。
有人可以告诉我发生了什么事吗?
最佳答案
您的代码中有两个可能的错误
您的 fragment 扩展 android.support.v4.app.Fragment
并且适配器中的 getItem()
方法返回一个 android.app.Fragment
反之亦然。
在任何情况下,确保您的 fragment 和适配器方法都返回相同的类型,最好是android.support.v4.app.Fragment
,这样您就可以开始了。
关于android - Android Kotlin 中的 fragment 类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48860126/