BitmapFactory无法解码流。致命的nullpointer错误

时间:2014-05-11 20:27:36

标签: android

解码流有问题。我试图将图像从文件夹/ MyApp /图标放到imageView。我有一个致命的错误

05-11 22:21:22.319: E/BitmapFactory(7981): Unable to decode stream: java.io.FileNotFoundException: /MyWeather/icons/a04n.png: open failed: ENOENT (No such file or directory)

我尝试设置" icons /.." ," / icons /.."以及许多其他选择,但任何人都不行。

public class Notifications extends Activity{



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.notification);

        ImageView imageView1 = (ImageView) findViewById(R.id.imageView1);
        Bundle extras = getIntent().getExtras();
        String ikona = extras.getString("icon");

        Bitmap bm = BitmapFactory.decodeFile("MyWeather/icons/a"+ikona+".png");
        imageView1.setImageBitmap(bm);

    }

}

有人能告诉我,我如何从这个文件夹中获取此图标并将其设置在我的imageView中? 谢谢。 enter image description here

1 个答案:

答案 0 :(得分:2)

将您的文件夹放在项目的根目录中并不意味着它会将该文件夹放到Android设备的根目录中...
那么,在您的情况下,我建议您将文件保存在assets文件夹中,并使用AssetManager加载文件。

这是一个例子:

将“icons”文件夹放入资源文件夹。

使用以下代码解码图像文件:

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.notification);

    ImageView imageView1 = (ImageView) findViewById(R.id.imageView1);
    Bundle extras = getIntent().getExtras();
    String ikona = extras.getString("icon");

    AssetManager assetManager = getAssets();
    Bitmap bm;
    try {
        InputStream is = assetManager.open("icons/a"+ikona+".png");
        bm = BitmapFactory.decodeStream(is);    
    } catch (IOException e) {
        e.printStackTrace();
        // put your exception handling code here.
    }
    imageView1.setImageBitmap(bm);
}