2013-09-22 36 views
2

我一直在嘗試使用Intent方法在我的程序中,代碼顯示沒有錯誤,當我使用myactivity.this ...當我使用其他兩個(myactivity.class或),eclipse顯示錯誤。myactivity.this之間的差異,myactivity.class,這

Intent i = new Intent(myActivity.this,myActivity2.class); 
startActivity(i); 

當我使用myactivity.class在第一個參數,

的Eclipse顯示構造意圖的誤差不限定。爲什麼是這樣,任何人都可以解釋?

回答

10

myActivity.this == Refrence上下文


myActivity2.class ==參考類,這是它的類名


這個 ==它是當前類型,如果你在線程中,那麼它是線程類型;如果你在Activity中,那麼它就是Activity Type;如果你在你的自定義類說CAR則是轎車型

當你做對然後因爲你不能在主線程在這一點,你可以使用getApplicationContext(你得到一個錯誤)

當您使用myActivity.this它知道它將從此活動的上下文開始。

+0

正是我需要的......那是非常有幫助的。 –

0

讓我給你的答案是:

當我使用myactivity.class或本在第一個參數,Eclipse中顯示 沒有定義構造函數意向性錯誤。

您得到錯誤的原因是您應該將有效參數傳遞給您嘗試調用的Intent構造函數。 看到這個:LINK 哪些

  1. 實施這一類的應用程序包的語境。
  2. 要用於意圖的組件類。

正如你所說,你試過myactivity.class,指的奇巧的回答這個參數是不夠有效的得到傳遞給意向構造。

對於這個而言,如果您在有效的活動上下文中,則不應該得到任何編譯錯誤。

+0

但這可能會給運行時異常 – Trikaldarshi

+0

固定,請參閱上面:) – Mohit

+0

hmmmmmm ........現在它的權利 – Trikaldarshi

0

第一個參數是用於當前活動的上下文,因此this或Activity.this或getApplicationContext將會執行。第二個參數是指你想要移動到的類名。這就是爲什麼 。這是第一個參數,第二個是.class。希望你現在明白了。

0

也許你是在另一個對象中編寫代碼,就像在OnClickListener中一樣,因此這代表了OnClickListener的當前對象而不是MainActivity類。 這就是爲什麼你應該使用MainActivity.class來引用主Activity。 在此上下文中表示OnClickListener的對象。