我使用毕加索库为我的应用程序,它到目前为止工作得非常好。我有两个活动,一个显示所有图像,一个显示一个图像,当我在第一个活动中点击它时。图像被加载到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的内容设置为我的壁纸?
非常感谢!!
答案 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();