2014-03-03 57 views
0

我有一個活動,當onStart方法觸發時,它會調用Web服務來獲取數據。此活動包含一些按鈕,允許用戶導航到不同的片段。Android BroadcastReceiver onReceive NullReference

當檢索到來自網絡服務的數據時,它會啓動一個BroadcastIntent

如果用戶在相關片段內,它通過BroadcastReceiver捕獲該意圖。在onReceieve函數中,我將緩存的數據從獲取到static的Web服務數據。

所以,這就是問題所在:

onReceieve功能,當我試圖從靜態類的數據,它顯示的數據爲空。因此,當我嘗試訪問該數據的內部對象時,它會拋出一個NullReference。

唯一的一次,它不會顯示NullReference是,如果活動屏幕上,如果我伺候好10-15秒,讓數據回來靜態類內填充的對象。

該方法與立即啓動片段仍然相同。我有一個回調函數,當從Web服務接收到數據時觸發。這個函數總是在onReceieve之前調用。那麼,爲什麼在靜態類中的數據顯示爲空,我不知道.....

希望我的問題的描述是一致的。如果沒有,請讓我知道。

代碼

此代碼將數據保存到靜態類(而且永遠是廣播接收器的之前的onReceive調用)。

for (int i = 0; i < myResult.getResource().getCategories().size(); i++) { 
    ...... 
    MyModel.cachedResult.put(tempOfferType, category); 
} 

立即在此之後,我開始BroadcastIntent

Intent broadcastIntent = new Intent(MyFragment.ACTION_REQUEST_RESULT); 
this.getApplicationContext().sendBroadcast(broadcastIntent); 

onReceive功能:

public void onReceive(Context context, Intent intent) { 
    ... 
    // Line below throws NRE because offers is null 
       adapter = new OfferAdapter(getActivity(), 0, offers.toArray(new SinglePlusOfferVO[0])); 

    ... 
} 

再次,如果我等待10-15秒的主要活動則NRE不會發生。如果我立即進入片段,那麼NRE發生。

回答

0

我已經解決了這個問題。 Data有一個問題,與我如何構建一切有關。

相關問題