android mainactivity.this和this [duplicate]有什么区别

wljmcqd8  于 12个月前  发布在  Android
关注(0)|答案(1)|浏览(108)

此问题已在此处有答案

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.thisthis中是否存在任何差异

uinbv5nw

uinbv5nw1#

当你这样做时:

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

相关问题