当我在 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。(匿名),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
答案 0 :(得分:3)
执行此操作时:
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
中使用onClick()
键盘输入时,此处的this
是指创建的匿名类的实例(尽管您也可以访问MainActivity的实例),因此,要引用MainActivity的实例,必须使用MainActivity.this
。