Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android this與Activity.this的區別

Android this與Activity.this的區別

編輯:關於Android編程

寫語句的時候有兩種情況:

Toast.makeText(AlarmActivity.this,"鬧鐘取消", Toast.LENGTH_SHORT); 
 <pre name="code" class="java">Toast.makeText(this,"鬧鐘5秒後啟動", Toast.LENGTH_SHORT); 

           用英文在google搜what‘s difference between this and Activity.this,終於有了結果(其實自己後面用了Java裡ClassName.this和this 之前搜的是Activity.this,所以沒有結果,這點自己要靈活的提高自己的搜索能力了)。

      在StackOverFlow找到了答案:

http://stackoverflow.com/questions/10102151/whats-the-difference-between-this-and-activity-this

Intent intent = new Intent(this, SecondActivity.class); 
 
 eclipse error: The method setClass(Context, Class) in the type Intent is not applicable for the arguments (FirstActivity.ClickEvent, Class) 
 
Intent intent = new Intent(FirstActivity.this, SecondActivity) 

this refers to your current object. In your case you must have implemented the intent in an inner class ClickEvent, and thats what it points to.
Activity.this points to the instance of the Activity you are currently in.

this是你當前對象的引用,在你的例子中你肯定在內部類ClickEvent裡面實現intent,他指向的是ClickEvent,而不是你要傳入的Activity。

Activity.this指向你所填寫的Activity名字的一個實例,也是引用。

    其實這是java的基礎,我自己忘了。

this作為當前對象,直接用在Activity裡面是沒問題的,當this在匿名內部類中使用,當前的對象就變成new的內部類,而你傳入的東西如果是整個Activity的話,就要Activity.this了。

Button b.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { 
 public void onClick(DialogInterface dialog, int which) { 
  Toast.makeText(AlarmActivity.this,"鬧鐘5秒後啟動", Toast.LENGTH_SHORT);  
}}; 

所以在這裡面需要指定是哪個activity的,Toast的那條語句移到外面,刪掉AlarmActivity也行。

    所以還是網友建議,全部用成Activity.this,清晰。

以上就是 Android this與Activity.this的區別的資料整理,後續繼續補充相關資料謝謝大家對本站的支持!

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved