在我的申请中,我的ListView
包含TextView
&一个或多个ImageViews
。
然后我调用一个网络服务,作为响应,我给出了TextView& URL图像的字符串(不是实际图像)。
我在AsyncTask
中调用此网络服务。
在postExecute()
中,我设置了TextView,然后调用Service
来获取图片内容。
在服务中,我在for-loop中使用ExecutorService
逐个获取图像。
在驱动器中下载所有图片后,我发送broadcast
通知我的fragment
所有图片都已下载。
在片段onReceive()
中,我在ImageViews
中设置了图片。
问题有时候,甚至在呈现ImageView之前就会调用onReceive()。
所以我在ImageView上获得NullPointerException
。
我该如何解决这个问题。
我不愿意整合任何第三方图书馆,除非确实需要。
谢谢
答案 0 :(得分:0)
boolean uiReady = false;
boolean imagesReady = false;
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(uiReady){
// Set images
}
else {
imagesReady = true;
}
}
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(imagesReady){
// Set images
}
else {
uiReady = true;
}
}
答案 1 :(得分:0)
activity-lifecycle中的哪个/何时是执行webservice调用的AsyncTask的开头?
如果在设置ImageView之后,开始是onCreate
中的最后一个语句,则问题应该已经消失