将imageView的内容设置为壁纸(毕加索)

时间:2015-01-04 15:52:32

标签: java android nullpointerexception wallpaper picasso

我使用毕加索库为我的应用程序,它到目前为止工作得非常好。我有两个活动,一个显示所有图像,一个显示一个图像,当我在第一个活动中点击它时。图像被加载到imageView中。 现在我想将此imageView的内容设置为我的主屏幕壁纸。到目前为止,我有这个:

if (id == R.id.set_wall) {


        Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.id.image);
        WallpaperManager myWallpaperManager = WallpaperManager
                .getInstance(getApplicationContext());

        try {
            myWallpaperManager.setBitmap(mBitmap);
            Toast.makeText(DetailActivity.this, "Wallpaper set",
                    Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            Toast.makeText(DetailActivity.this,
                    "Error setting wallpaper", Toast.LENGTH_SHORT)
                    .show();
        }
        return true;


    }

但这给了我这个错误:

 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)'  on a null object reference

有没有人知道如何将此imageView的内容设置为我的壁纸?

非常感谢!!

1 个答案:

答案 0 :(得分:3)

替换Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.id.image);

Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image);

如果你没有Drawable,那么

从imageview获取位图的代码

Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();