为什么“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); 
      } 
     });