Android 開發中 getContext 和 getActivity的區別
Android 開發中 getContext 和 getActivity的區別
-
MainActivity.this:表示MainActivity物件,一般用在內部類中指示外面的this,如果在內部類直接用this,指示的是內部類本身。因為MainActivity繼承Activity,而Activity繼承Context,所以它也可以用來提供Activity Context;
-
this:表示當前物件;一般而言,在哪個類中呼叫,就是指向該物件。
-
getContext():這個是View類中提供的方法,在繼承了View的類中才可以呼叫,返回的是當前View執行在哪個Activity Context中。
-
getActivity():獲得Fragment依附的Activity物件。Fragment裡邊的getActivity()不推薦使用原因如下:這個方法會返回當前Fragment所附加的Activity,當Fragment生命週期結束並銷燬時,getActivity()返回的是null,所以在使用時要注意判斷null或者捕獲空指標異常。
在Fragment中獲取上下文Context一般用getActivity: 全域性Application: public class Application extends Application { private static Application instance; @Override public void onCreate() { super.onCreate(); instance = this; } public static Application getInstance(){ return instance; } } 在Fragment中直接使用getContext方法容易產生空指標異常,覆寫getContext方法 private Activity activity; public Context getContext() { activity = getActivity(); if (activity == null) { return HSApplication.getInstance(); } return activity; }
相關文章
- Java開發和Android開發的區別JavaAndroid
- 會開發和懂開發的區別
- Android中 @和?區別以及?attr/**與@style/**等的區別Android
- android onTouchEvent和setOnTouchListener中onTouch的區別Android
- 瀑布式開發和敏捷開發的區別敏捷
- android中Invalidate和postInvalidate的區別Android
- 開發APP和開發微信小程式的區別?APP微信小程式
- 原生開發、H5開發和混合開發的區別H5
- UI設計和前端開發的區別UI前端
- springboot和ssm開發的區別Spring BootSSM
- mysql中!=和is not的區別MySql
- JavaScript中for in 和for of的區別JavaScript
- mysql中“ ‘ “和 “ ` “的區別MySql
- Js中for in 和for of的區別JS
- Android主專案和Module中R類的區別Android
- Android中Application和Activity的Context物件的區別AndroidAPPContext物件
- PHP 中的 -> 和 :: 的區別PHP
- web 開發裡 SSR,CSR 和 SSG 的區別Web
- Linux下開發-fcntl和ioctl的區別Linux
- Mybatis中#{}和${}傳參的區別及#和$的區別小結MyBatis
- 運維和開發知識,Java中的抽象類和介面的兩大區別!運維Java抽象
- js--typeof 和 instanceof 判斷資料型別的區別及開發中的使用JS資料型別
- php中的執行緒、程式和併發區別PHP執行緒
- java 中equals和==的區別Java
- SQL中where和on的區別SQL
- Python 中 is 和 == 的區別Python
- Python中is和==的區別Python
- Java中equals和==的區別Java
- oracle中in和exists的區別Oracle
- [android]monkey中trackball和motion什麼區別Android
- 微信開發中 openID 與 unionID 的區別
- iOS開發中各種關鍵字的區別iOS
- HTTP中的重定向和請求轉發的區別HTTP
- SEAndroid和普通android的區別Android
- 移動前端開發和 Web 前端開發的區別是什麼?前端Web
- JavaWeb開發Servlet之getParameter和getAttribute的區別,JavaWebServlet
- JS中的!=、== 、!==、=== 的用法和區別JS
- java中的==和equal的區別Java