我正在制作一个应用程序,允许用户捕获并成像,然后在拼图上使用该图像。我可以成功使用相机,但是在捕获图像后,应该将其带到从本地存储中加载图像的拼图屏幕时,会出现FNF异常。 (我在应用程序中有一个部分,显示用户可用于拼图的图像,新捕获的图像显示在此处-由于崩溃而重新启动应用程序之后)。
我的代码如下
return
在return
行上引发异常。请帮我解决这个问题。谢谢。
编辑:包裹尝试捕获 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
at apps.mine.puzzle.Board.countTileSize(Board.java:60)
at apps.mine.puzzle.PlayPuzzleActivity.onCreate(PlayPuzzleActivity.java:138)
行,现在显示Logcat
{{1}}
答案 0 :(得分:1)
我有类似的问题,它将解决此问题:
if(BitmapFactory.decodeFile(Image[position])!=null)
{
Bitmap bitmap=Bitmap.createScaledBitmap(BitmapFactory.decodeFile(Image[position]), 32, 32, true);
imageView.setImageBitmap(bitmap);
}
else
{
Log.d("TAG", "unable to decode");
}
此问题的主要原因是decodeResource
由于以下原因之一而返回null:
更新
如果您不想像@Zoe所指出的那样对文件进行两次解码,则可以修改decodeResource
的代码,这样它将无需检查就可以进行空检查,就像这样:>
public class BitmapScalingHelper
{
public static Bitmap decodeResource(Resources res, int resId, int dstWidth, int dstHeight)
{
Options options = new Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res, resId, options);
options.inJustDecodeBounds = false;
options.inSampleSize = calculateSampleSize(options.outWidth, options.outHeight, dstWidth,
dstHeight);
options = new Options();
Bitmap unscaledBitmap = BitmapFactory.decodeResource(res, resId, options);
if(unscaledBitmap == null)
{
Log.e("ERR","Failed to decode resource" + resId + " " + res.toString());
return null;
}
return unscaledBitmap;
}
}