第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

上下文空引用問題

上下文空引用問題

梵蒂岡之花 2021-04-28 09:23:28
超級(jí)難解釋。這是我在報(bào)告中遇到的錯(cuò)誤:Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference當(dāng)您進(jìn)出片段時(shí),這似乎是間歇性發(fā)生的。該錯(cuò)誤似乎發(fā)生在適配器中。這是所謂的地方:    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {        getActivity().setTitle("Shipments");        myView = inflater.inflate(R.layout.shipments_out_layout, container, false);        listView = myView.findViewById(R.id.listView);        fetchShipments();        return myView;    }    /**     * Fetch shipments     */    public void fetchShipments()    {        shipmentsService.fetchFromServer(getActivity());    }    /**     * Show shipments     */    public void showShipments(){        RealmResults<Shipment> savedShipments = shipmentsService.all();        ShipmentsAdaptor adaptor = new ShipmentsAdaptor(savedShipments, this.getContext());        listView.setAdapter(adaptor);    }這是適配器出現(xiàn)錯(cuò)誤的地方:public class ShipmentsAdaptor extends ArrayAdapter<Shipment> {private RealmResults<Shipment> dataSet;Context mContext;// View lookup cacheprivate static class ViewHolder {    TextView stockItemId;    TextView technicianName;    TextView shipmentDate;}public ShipmentsAdaptor(RealmResults<Shipment> data, Context context){    super(context, R.layout.shipments_out_row_item, data);    this.dataSet = data;    this.mContext = context;}具體來說就是這行: super(context, R.layout.shipments_out_row_item, data);我認(rèn)為這可能與我們將上下文插入適配器,然后在完成頁面之前更改頁面的方式有關(guān),但事實(shí)證明這沒有定論。
查看完整描述

3 回答

?
慕運(yùn)維8079593

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)!


查看完整回答
反對(duì) 回復(fù) 2021-05-26
?
qq_笑_17

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)用它有


查看完整回答
反對(duì) 回復(fù) 2021-05-26
?
慕尼黑的夜晚無繁華

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。


查看完整回答
反對(duì) 回復(fù) 2021-05-26
  • 3 回答
  • 0 關(guān)注
  • 224 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)