Android getActivity()為空的問題解決辦法

在開發(fā)項目中有時會碰到getActivity函數(shù)為空的情況, 導(dǎo)致apk空指針崩潰問題, 看代碼邏輯沒有明顯的原因。
如果看Activity.Java、FragmentActivity.java的源碼就可以找到原因。 當(dāng)activity實例在后臺時, 系統(tǒng)在回收資源時很可能回收掉Activity, 并在onSaveInstanceState函數(shù)里保存fragment的狀態(tài), 再次打開該Activity時, 在onCreate方法里取出bundle里的fragment狀態(tài), 但這時fragment對應(yīng)的Activity早就不在了, 所以getActivity為空。
摘自FragmentActivity.java:
protected void onCreate(Bundle savedInstanceState) {
.......
if (savedInstanceState != null) {
Parcelable p = savedInstanceState.getParcelable(FRAGMENTS_TAG);
mFragments.restoreAllState(p, nc != null ? nc.fragments : null);
}
mFragments.dispatchCreate();
}
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Parcelable p = mFragments.saveAllState();
if (p != null) {
outState.putParcelable(FRAGMENTS_TAG, p);
}
}
分享名稱:AndroidgetActivity()為空的問題解決辦法-創(chuàng)新互聯(lián)
分享鏈接:http://www.chinadenli.net/article0/dsooio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、品牌網(wǎng)站設(shè)計、電子商務(wù)、營銷型網(wǎng)站建設(shè)、App設(shè)計、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容