android - Android Kotlin 中的 fragment 类型不匹配

标签 android android-fragments tabs kotlin type-mismatch

我将逐步尝试在 Kotlin/Android 中创建一个简单的选项卡布局。我对我发现的许多教程感到非常沮丧,因为它们要么 1) 有效,但设计过度,很难看清发生了什么,要么 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
    }
}

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

类 Tab1Fragment : Fragment()

这对我来说应该没问题。

这是我所看到的图片,以防有人不相信我。

https://imgur.com/a/XvZaP

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

最佳答案

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

您的 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/

相关文章:

android - 如何在android中使用广播接收器获取应用程序的包名称?

android - 后台 Phonegap android 应用程序 cpu 使用情况

android - 如何动态更改 ViewPager 中的 fragment ?

java - 当滑动到布局刷新 fragment 中的布局时如何禁用后按

visual-studio - 如何在 Visual Studio 中移动 "Solution Explorer"选项卡

java - 对齐 TextView 中的部分文本

android - Espresso android - IllegalStateException : UiAutomationService android.accessibilityservice.IAccessibilityServiceClient 已经注册

reactjs - React-Bootstrap - 如何激活 NavItem 之外的选项卡

android - 尝试使用 FragmentActivity 时无法访问 ActivityCompat Api 23

MS Edge 上的 CSS 边框问题