Android开发:Toast.makeText参数不匹配报错求助
Toast.makeText 参数不匹配问题排查
问题根源
你调用Toast.makeText时传入的第一个参数this,指向的是View.OnClickListener的实现对象,而不是Android要求的Context类型(比如你的Activity实例)。Toast.makeText的重载方法只接受Context作为第一个参数,所以参数类型不匹配导致报错。
解决方案
把第一个参数替换为正确的Context实例,有几种常用方式:
- 方式1:通过点击的View获取Context
直接使用点击事件传入的v对象获取Context,这是最通用的写法:Toast.makeText(v.context, "Anda berhasil mengerjakan quiz", Toast.LENGTH_SHORT).show() - 方式2:指定Activity实例(如果在Activity类中)
如果这段代码写在Activity里,用this@你的Activity名称明确指向Activity实例:// 假设你的Activity叫QuizActivity Toast.makeText(this@QuizActivity, "Anda berhasil mengerjakan quiz", Toast.LENGTH_SHORT).show() - 方式3:使用Fragment的Context(如果在Fragment中)
若代码在Fragment里,用requireContext()获取上下文:Toast.makeText(requireContext(), "Anda berhasil mengerjakan quiz", Toast.LENGTH_SHORT).show()
修改后的代码片段
以方式1为例,修改后的按钮点击逻辑:
R.id.btn_jawab -> { if (mSelectedOptionPosition == 0) { mCurrentPosition++ when { mCurrentPosition <= mQuestionlist!!.size ->{ setQuestion() }else -> { Toast.makeText(v.context, "Anda berhasil mengerjakan quiz", Toast.LENGTH_SHORT).show() } } } }
内容的提问来源于stack exchange,提问作者Khosyi Cahyadi
相关产品推荐
相关产品推荐

