2017-06-22 146 views
-4

我正在嘗試使用按鈕進行第二項活動。下面是代碼:爲什麼「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我沒有得到任何錯誤。爲什麼會發生?

回答

2

this不起作用,因爲您處於OnClickListener類型的匿名類中,這不是setClassName所期望的。在編寫MainActivity.this時,您明確告訴java從MainActivity類型的封裝類中獲取this

0

使用下面的代碼

login.setOnClickListener(new View.OnClickListener() 
     { 

      @Override 
      public void onClick(View v) { 
       Intent i=new Intent(MainActivity.this,SecondAtivity.class); 
       startActivity(i); 
      } 
     });