LiveWallper中的android空指针问题不确定原因
我正在写一个LiveWallper,它将从flickr中提取图像并将其作为背景,并且每隔一段时间就会改变。现在我已经打断/忽略/绕过了flickr部分,并且也忽略了定时更改。我仍然一遍又一遍地出现相同的空指针错误,我无法找出是什么导致了它 下面是与错误相关的几个方法LiveWallper中的android空指针问题不确定原因,android,nullpointerexception,Android,Nullpointerexception,我正在写一个LiveWallper,它将从flickr中提取图像并将其作为背景,并且每隔一段时间就会改变。现在我已经打断/忽略/绕过了flickr部分,并且也忽略了定时更改。我仍然一遍又一遍地出现相同的空指针错误,我无法找出是什么导致了它 下面是与错误相关的几个方法 @Override public void onVisibilityChanged(boolean visible) { mVisible = visible; if (visible) {
@Override
public void onVisibilityChanged(boolean visible) {
mVisible = visible;
if (visible) {
setImage(getPic());//***NULLPOINTERERROR
} else {
mHandler.removeCallbacks(getFlickrPic);
}
}
public void setImage(Bitmap bm)
{
final SurfaceHolder holder = getSurfaceHolder();
Canvas c= null;
try{
c=holder.lockCanvas();
if (c != null) {
c.setBitmap(bm);
}
} finally { if (c != null) holder.unlockCanvasAndPost(c); }
}
public Bitmap getPic()
{
Bitmap bm = null;
bm = ((BitmapDrawable) LoadImageFromWebOperations("http://farm6.static.flickr.com/5102/5655314644_b7038a5438_z.jpg")).getBitmap();
while (bm==null)
{bm = ((BitmapDrawable) getResources().getDrawable(R.drawable.no)).getBitmap();}
return bm;
}
private Drawable LoadImageFromWebOperations(String url)
{
try
{
InputStream is = (InputStream) new URL(url).openStream();
Drawable d = Drawable.createFromStream(is, "src name");
return d;
}catch (Exception e) {
System.out.println("Exc="+e);
return null;
}
}
在OnVisibilityChanged(visible)方法中,我不断得到getPic()方法的NullPointerException,并用*注释注释
如果需要更多信息,请询问。就像我说的,我不知道为什么它会给我这个错误,所以有可能是我没有包含的代码中的某个东西。
谢谢 LoadImageFromWebOperations在发生错误时返回null。在getPic中,如果返回的值为null,则尝试对LoadImageFromWebOperations的返回值调用getBitmap()
您试图对空对象调用getBitmap(),这将导致您的NPE哇,这就是构造
while (bm==null) {
bm = ((BitmapDrawable) getResources().getDrawable(R.drawable.no)).getBitmap();
}
那看起来很邪恶
无论如何,您的问题如下:
bm = ((BitmapDrawable) LoadImageFromWebOperations("http://farm6.static.flickr.com/5102/5655314644_b7038a5438_z.jpg")).getBitmap()
LoadImageFromWebOperations
可以返回null。在这种情况下,您仍然对空引用调用getBitmap()
。首先,构造是作为绕过一个可能的空指针的一种方式存在的,因此在我弄明白这一点后,它将被立即删除。另外,当我更改LoadImageFromWebOperations的声明,使其返回web图片或本地图片(因此不可能为null)时,我得到了相同的错误。。。