LiveWallper中的android空指针问题不确定原因

LiveWallper中的android空指针问题不确定原因,android,nullpointerexception,Android,Nullpointerexception,我正在写一个LiveWallper,它将从flickr中提取图像并将其作为背景,并且每隔一段时间就会改变。现在我已经打断/忽略/绕过了flickr部分,并且也忽略了定时更改。我仍然一遍又一遍地出现相同的空指针错误,我无法找出是什么导致了它 下面是与错误相关的几个方法 @Override public void onVisibilityChanged(boolean visible) { mVisible = visible; if (visible) {

我正在写一个LiveWallper,它将从flickr中提取图像并将其作为背景,并且每隔一段时间就会改变。现在我已经打断/忽略/绕过了flickr部分,并且也忽略了定时更改。我仍然一遍又一遍地出现相同的空指针错误,我无法找出是什么导致了它

下面是与错误相关的几个方法

@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)时,我得到了相同的错误。。。