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 确实在您的布局中吗?此外,&lt;&gt; 中的类型也在那里,因此您可以指定该 ID 是哪个视图。 findViewById&lt;View&gt;(R.id.viewPagerGaleria) as ViewPager 可以缩写为 findViewById&lt;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

Nest JS GraphQL“不能为非空返回null” [重复]

使用 Linq 的 Where/Select 过滤掉 null 并将类型转换为不可为 null 不能做成扩展方法