3 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊
該Fragment#getContext()
可為空。null
當(dāng)您的片段與活動(dòng)分離時(shí),此方法返回。該應(yīng)用程序崩潰是因?yàn)槟谖锤郊悠蔚那闆r下創(chuàng)建了適配器,從而導(dǎo)致將其null
傳遞給構(gòu)造函數(shù)。
showShipments
僅當(dāng)片段附加到活動(dòng)時(shí)才應(yīng)調(diào)用該方法。有回調(diào)onAttach()
,onDetach()
這將幫助您檢測狀態(tài)。還isAdded()
返回一個(gè)布爾值,說明該片段是否已附加。選擇對(duì)您來說方便的東西。
祝你好運(yùn)!

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊
看起來您fetchShipments();
在返回片段布局視圖(myView)之前正在調(diào)用,因此在實(shí)例化適配器時(shí)它為null。
嘗試:
移動(dòng)fetchShipments();
從onCreateView(),并將其放置在的onResume()或覆蓋在onStart()和調(diào)用它有

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以在適配器設(shè)置過程中檢查是否為null以避免這種情況。在Fragment中,有時(shí)getActivity可以在Fragment生命周期的不同時(shí)間返回null。例如,在showShipments
Activity a = getActivity();
if( a == null || a.isFinishing() ) {
// Not in a valid state to show things anyway, so just stop and exit
return;
}
ShipmentsAdaptor adaptor = new ShipmentsAdaptor(savedShipments, a);
您還可以檢查isAdded(),如果為false,則可以從中獲取null getActivity()。
另外,請(qǐng)考慮將呼叫fetchShipments()從onCreateView轉(zhuǎn)移到onActivityCreated。
添加回答
舉報(bào)