Android MainActivity.this和this之间有什么区别

Android MainActivity.this和this之间有什么区别,android,Android,当我在main活动中键入这样的代码时:- 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(); }

当我在main活动中键入这样的代码时:-

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.(匿名),java.lang.String,int)”

但是

这并没有显示错误, 因此,
main活动中是否存在任何差异。此


请投票删除这篇文章,因为这篇文章对未来的读者没有任何用处。进行此操作时,所有信息以两个问题提供

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();
    }
 });
您正在使用接口
OnClickListener
的实现创建一个匿名类


现在,当您使用
this
keywork In
onClick()
时,这里的
this
指的是创建的匿名类的实例(尽管您也可以访问MainActivity的实例),因此,要引用MainActivity的实例,您必须使用
MainActivity,您可以使用
this@MainActivity
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();
    }
 });