null 不能转换为非 null 类型 android.support.v4.view.ViewPager - KOTLIN
Posted
技术标签:
【中文标题】null 不能转换为非 null 类型 android.support.v4.view.ViewPager - KOTLIN【英文标题】:null cannot be cast to non-null type android.support.v4.view.ViewPager - KOTLIN 【发布时间】:2018-10-29 16:37:08 【问题描述】:我知道这些问题已经得到解答,但我认为这是另一回事。所以,我有以下代码:
viewPager = findViewById<View>(R.id.viewPagerGaleria) as ViewPager
val adapter = ViewPageAdapter(this)
viewPager.adapter = adapter
//dots
val pageIndicatorView = findViewById<View>(R.id.pageIndicatorView) as PageIndicatorView
pageIndicatorView.setViewPager(viewPager)
当我运行它时,会发生这种情况:... kotlin.TypeCastException: null 不能转换为非 null 类型 android.support.v4.view.ViewPager。正常到这里,对吧?不,因为当我这样做时,错误是一样的:
val viewPager = findViewById<View>(R.id.viewPagerGaleria) as? ViewPager
val adapter = ViewPageAdapter(this)
viewPager?.adapter = adapter
//dots
val pageIndicatorView = findViewById<View>(R.id.pageIndicatorView) as? PageIndicatorView
pageIndicatorView?.setViewPager(viewPager)
你能帮帮我吗?谢谢。
【问题讨论】:
您确定 ID 确实在您的布局中吗?此外,<>
中的类型也在那里,因此您可以指定该 ID 是哪个视图。 findViewById<View>(R.id.viewPagerGaleria) as ViewPager
可以缩写为 findViewById<ViewPager(R.id.viewPagerGaleria)
。
@TheWanderer 是的,先生,它是......
你确定吗?如果findViewById()
返回null,则表示找不到该名称的任何视图。这些方法在哪里被调用,setContentView()
在哪里被调用?你确定你设置了正确的布局吗?
【参考方案1】:
我同意@TheWanderer,你的问题就在这里:findViewById****。
因此,要解决此问题,您可以删除类型并将其替换为并摆脱强制转换“as?ViewPager”,因为在这种情况下不需要它
val viewPager = findViewById<ViewPager?>(R.id.viewPagerGaleria)
或者明确省略目标类类型并保留演员表
val viewPager = view.findViewById(R.id.viewpager) as? ViewPager
PS:而且您的布局中可能没有所需的 viewPager id。
【讨论】:
【参考方案2】:对不起,伙计们,我把那段代码放错了类!我的错!
【讨论】:
以上是关于null 不能转换为非 null 类型 android.support.v4.view.ViewPager - KOTLIN的主要内容,如果未能解决你的问题,请参考以下文章
kotlin.TypeCastException: null 不能转换为非 null 类型 com.midsizemango.databasekotlin.Note
致命异常 java.lang.NullPointerException: null 不能转换为非 null 类型 kotlin.String
null 不能转换为非 null 类型 android.support.v4.view.ViewPager - KOTLIN
Android Kotlin:null 不能转换为非 null 类型 com.android.app.ui.category.CategoryAdapter.ViewHolder 想要在 recycl