11

保存文件:

FileOutputStream fo = null; 
try { 
        fo = this.openFileOutput("test.png", Context.MODE_WORLD_READABLE); 
} catch (FileNotFoundException e) { 
        e.printStackTrace(); 
} 
bitmap.compress(CompressFormat.PNG, 100, fo)

加载文件:

String fname = this.getFilesDir().getAbsolutePath()+"/test.png"; 
Bitmap bMap = BitmapFactory.decodeFile(fname);
i.setImageBitmap(bMap);

最后一行给出了空指针异常,为什么BitmapFactory.decodeFile返回null?我可以验证文件是否正确保存,因为我可以使用 adb 拉取它并看到 png 正确显示。

4

2 回答 2

20

如果NullPointerException直接在这一行:

i.setImageBitmap(bMap);

那么你的问题inull。鉴于您正在调用 setImageBitmap(),我猜这iImageView- 确保您的findViewById()调用正常。

此外,您应该使用以下内容来获取fname

String fname=new File(getFilesDir(), "test.png").getAbsolutePath();

于 2010-08-02T15:03:31.127 回答
2

在 DecodeFile 方法中使用 options 参数时,请确保InJustDecodeBounds属性设置为false,否则它将始终返回 null。当您只想解码文件但您的应用程序/代码中不需要它时,可以将其设置为 true。这样就不需要分配额外的内存。有关示例,请参见此处。

于 2016-10-14T08:07:35.973 回答