Android開發之Activity.this和this的區別聯系

最近在學習Android開發的活動(Activity)時,總是遇到Activity.this和this,搞不清楚這倆是什麼意思並有什麼區別,學習結果整理至此:

Intent(Context packageContext, Class cls)
Create an intent for a specific component.

由Intent類的構造方法可以看出,常用的Intent構造方法接收Context類的一個參數,也就是學習項目中的FirstAcitivity.this,this,SecondActivity.this等。
this是我們當前對象的引用,如果都在類FirstActivity中,且不在其內部類或本類內部引用的其他類方法中,this等價於FirstActivity.this。

public class FirstActivity{
    Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
    startActivity(intent);
}

public class FirstActivity{
    Intent intent = new Intent(this,SecondActivity.class);
    startActivity(intent);
}

以上兩段代碼等價。
但是如果在類中的內部類或本類中引用瞭其他類的方法(或重寫)的時候,this指內部類或者其他的類,而不是外部類。

public class FirstActivity extends AppCompatActivity{
        @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.d("FirstActivity",this.toString());
    setContentView(R.layout.first_layout);
    Button button1 =(Button)findViewById(R.id.button1);
    button1.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            Intent intent= new Intent(FirstActivity.this,SecondActivity.class);
            startActivityForResult(intent,1);
        }
    });
}
}

而本段代碼中的FirstActivity.this若替換成this,那麼this替代的就是Button類的上下文(Context)瞭。

You May Also Like