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

最近在學習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)了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章