最近在學習Android開發的活動(Activity)時,總是遇到Activity.this和this,搞不清楚這倆是什麼意思並有什麼區別,百度學習後轉載至此:
?
1
2
3
|
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。
?
1
2
3
4
5
6
7
8
9
10
|
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指內部類或者其他的類,而不是外部類。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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)了。