此问题已在此处有答案:
What is the difference between Class.this and this in Java(4个答案)
4年前关闭。
当我在MainActivity中输入这样的代码时:-
Button btn=(Button) findViewById(R.id.mainButton1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View p1)
{
Toast.makeText(this,"Some text...",Toast.LENGTH_SHORT).show();
}
});
它显示了错误
没有适用于“(com.example.MainActivity.(anonymous),java.lang.String,int)”的方法
但
Button btn=(Button) findViewById(R.id.mainButton1);
btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View p1)
{
Toast.makeText(MainActivity.this,"Some text...",Toast.LENGTH_SHORT).show();
}
});
这未显示错误,因此MainActivity.this
和this
中是否存在任何差异
1条答案
按热度按时间uinbv5nw1#
当你这样做时:
你正在创建一个匿名类,实现了接口
OnClickListener
。现在,当您在
onClick()
内部使用this
keywork时,这里的this
引用的是创建的匿名类的示例(尽管您也可以访问MainActivity的示例),因此,要引用MainActivity的示例,您必须使用MainActivity.this
。