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
- springboot和ssm開發的區別Spring BootSSM
- 瀑布式開發和敏捷開發的區別敏捷
- Android主專案和Module中R類的區別Android
- Android核心和Linux核心的區別AndroidLinux
- 原生開發、H5開發和混合開發的區別H5
- Python開發中字典和json有什麼區別?PythonJSON
- 開發APP和開發微信小程式的區別?APP微信小程式
- UI設計和前端開發的區別UI前端
- Android開發之--visibility屬性VISIBLE、INVISIBLE、GONE的區別AndroidGo
- Android之android:theme設定在Application 和 Activity的區別AndroidAPP
- JavaScript中==和===的區別JavaScript
- Linux中“>”和“>>”的區別Linux
- Python 中 is 和 == 的區別Python
- Python中is和==的區別Python
- mysql中“ ‘ “和 “ ` “的區別MySql
- JavaScript中for in 和for of的區別JavaScript
- Js中for in 和for of的區別JS
- mysql中!=和is not的區別MySql
- Android之Intent的setClass和setClassName的區別AndroidIntent
- APP測試中IOS和Android的區別,有哪些注意點?APPiOSAndroid
- Android中drawable和mipmap到底有什麼區別Android
- web 開發裡 SSR,CSR 和 SSG 的區別Web
- JavaWeb開發Servlet之getParameter和getAttribute的區別,JavaWebServlet
- PHP 中的 -> 和 :: 的區別PHP
- js--typeof 和 instanceof 判斷資料型別的區別及開發中的使用JS資料型別
- 微信開發中 openID 與 unionID 的區別
- Android程式(Processes)和任務(tasks)的區別Android
- SQL中where和on的區別SQL
- java 中equals和==的區別Java
- deferred中done和then的區別
- 運維和開發知識,Java中的抽象類和介面的兩大區別!運維Java抽象
- Android中asset資料夾和raw資料夾區別Android
- php中的執行緒、程式和併發區別PHP執行緒
- opencv和Python的區別是什麼?Python開發!OpenCVPython
- 移動前端開發和 Web 前端開發的區別是什麼?前端Web
- JS中的!=、== 、!==、=== 的用法和區別JS
- canvas getContext()CanvasContext