为什么this @ MainActivity不能在任何地方工作?

时间:2019-09-04 14:07:00

标签: android kotlin

我有一个ViewHolder,当用户按下viewHolder时,它必须显示Toast。(viewHolder类在MyAdapter类中) Toast.makeText方法的第一个参数是上下文。当我编写this @ MainActivity时,它得到了一个语法错误:不可靠的引用:@MainActivity。 但是当我在MainActivity中编写它时,效果很好。 请帮我修复它

2 个答案:

答案 0 :(得分:1)

因为它不是MainActivity实例,所以this@MainActivity仅在MainActivity.kt文件中需要上下文时才起作用。

您应该使用val context = holder.itemView.context,然后使用Toast.makeText(context, "Your message", Toast.LENGTH_SHORT).show()

答案 1 :(得分:0)

如果适配器类位于活动或片段中,则必须在类之前使用inner关键字:

inner class MyAdapter {}

这样,如果适配器位于您的MainActivity内部,则this @ MainActivity将起作用。

如果它不在您的活动中,则必须从“活动”或片段中获取上下文作为参数,

class MyAdapter(val context: Context) {}

class MyAdapter(val activity: Activity) {}