C#中應用JSON.NET完成JSON、XML互相轉換。本站提示廣大學習愛好者:(C#中應用JSON.NET完成JSON、XML互相轉換)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中應用JSON.NET完成JSON、XML互相轉換正文
媒介
在平常開辟中的時刻,我們常常會應用ViewPager+Fragment停止視圖滑動,在某些部門邏輯或許我們須要應用高低文Context(例如根本的Toast),然則因為Fragment只是依靠在Activity容器的一個試圖,假如須要拿到以後的Activity的高低文Context就必需經由過程getActivity()獲得。
但是,不曉得列位法式猿有無遇過湧現getActivity()湧現null的時刻招致法式報出空指針異常。
其實緣由可以歸結於由於我們在:
(一)切換fragment的時刻,會頻仍被crash
(二)體系內存缺乏
(三)反正屏幕切換的時刻
....
以下情況都邑招致Activity被體系收受接管,然則因為fragment的性命周期不會跟著Actiivty被收受接管而被收受接管,是以才會招致getActivity()湧現null的成績。
處理
這裡總結三個處理辦法:
(一)樹立Context援用
起首我們看下Fragment的性命周期:

在Fragment的性命周期中,在性命周期處於onAttach()和onDetach()之間的時刻getActivity()辦法才不會前往null。是以我們可以在fragment初始化的時刻樹立Context援用。
在fragment燒毀的時刻燒毀援用。
代碼以下:
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mCtx = activity;//mCtx 是成員變量,高低文援用
}
@Override
public void onDetach() {
super.onDetach();
mCtx = null;
}
(二)公道應用getapplicationcontext()
在辦法1中應用暫時變量存儲Context高低文援用可以或許必定水平處理成績。因為在Android中,Application、Service、Activity都具有高低文,getapplicationcontext()可以獲得全局的高低文,所以只需法式不封閉,獲得的context很難為null~
(三)自界說本身的application
第三種辦法其實與第二種辦法根本道理雷同,行將自界說的application中,暫時存儲application具有的高低文Context。在法式中,經由過程單利拜訪application的時刻獲得該高低文Context。
詳細應用以下:
(1)在設置裝備擺設清單注冊本身的application
<application android:name=".MyApplication" android:icon="@drawable/ic_launcher" android:label="@string/app_name" >
(2)在Application中的onCreate存儲高低文,而且創立單利。
public class MyApplication extends Application {
private static MyApplication instance;
@Override
public void onCreate() {
super.onCreate();
instance = this;//存儲援用
}
public static MyApplication getInstance(){
return instance;
}
}
總結
這裡只是我總結的幾個處置辦法,固然有其他開辟者有更好的建議可以或許提出來,如許更好。年夜家一路技巧分享,讓年夜家配合提高!