我有一个Activity,当onStart
方法触发时,它调用web服务来获取数据。此活动包含一些按钮,允许用户导航到不同的片段。
当检索到来自网络服务的数据时,它会启动BroadcastIntent
。
如果用户位于相关片段内,则会通过BroadcastReceiver
捕获意图。在onReceieve
函数中,我从网络服务数据中获取已缓存到static
类 的数据。
所以,这就是问题所在:
在onReceieve
函数中,当我尝试从静态类中获取数据时,它将数据显示为null。因此,当我尝试访问该数据的内部对象时,它会抛出NullReference。
唯一不显示NullReference的时间是,如果在Activity屏幕上,如果我等待10-15秒,请让数据返回并填充静态类中的对象。
这种方法仍然与立即启动片段相同。我有一个回调函数,当从Web服务收到数据时会触发该函数。并且在onReceieve之前总是调用此函数。那么为什么静态类中的数据显示为null,我不知道.....
希望我对这个问题的描述是连贯的。如果没有,请告诉我。
代码:
此代码将数据保存到静态类(并且总是在BroadcastReceiver的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]));
...
}
同样,如果我在主Activity上等待10-15秒,那么NRE就不会发生。如果我立即进入片段,则会发生NRE。
答案 0 :(得分:0)
我已经解决了这个问题。 Data
存在问题,与我构建所有内容的方式相反。