Fragment中獲取Context對象的兩種方法


我們在使用Fragment的時候經常需要傳遞Context類型的參數,而Fragment自己又不是一個Context類型的對象,於是我們有下面兩種方法獲取Context對象。

一、兩種方法介紹

1.this.getActivity()(可以不寫this.)
在Fragment中直接調用getActivity()方法,可以直接得到Fragment依附的Activity,而Activity是一個Context類型的對象。

2.獲取Application對象
如下自己寫一個MyApplication類繼承Application,通過getInstance獲取一個Application類型的對象,也是Context對象。

 

public class MyApplication extends Application { private MyApplication mInstance; public static void getInstance(){ if(mInstance == null){ mInstance = new MyApplication(); } return mInstance; } }

二、兩種方法比較

1.this.getActivity()

  • 優點:不需要寫MyApplication類
  • 缺點:Fragment很容易被銷毀,調用getActivity()方法會報空指針錯誤(注意:並不是getActivity()返回值為null,而是this.getActivity()中的this,也就是Fragment自己是null,因為它已經被銷毀了)

2.獲取Application對象

  • 優點:不會遇到類似this.getActivity()的空指針問題
  • 缺點:某些情況下的Context必須是Activity,特別是實例化Dialog等需要依附於一個Activity的可視化的對象時傳參必須是Activity對象(Toast是Android的一種通知機制,不需要依附於Activity
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM