为什么“this”给出错误?
问题描述:
我正在尝试使用按钮进行第二项活动。下面是代码:为什么“this”给出错误?
public class MainActivity extends AppCompatActivity {
Button login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
login=(Button) findViewById(R.id.login);
login.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
Intent i=new Intent();
i.setClassName(this,"com.example.ankit.layouts.SecondAtivity");
}
});
}
}
我正在一个错误i.setClassName()
为“不能解决此方法”,但是当我使用MainActivity.this
我没有得到任何错误。为什么会发生?
答
this
不起作用,因为您处于OnClickListener
类型的匿名类中,这不是setClassName
所期望的。在编写MainActivity.this
时,您明确告诉java从MainActivity
类型的封装类中获取this
。
答
使用下面的代码
login.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
Intent i=new Intent(MainActivity.this,SecondAtivity.class);
startActivity(i);
}
});