2 baidu 28357063 baidu_28357063 于 2015.06.03 17:25 提问

android中关于assetManager.list("")的问题。困扰我一下午了

我通过这段代码images = assetManager.list("img"),将assets目录下的img文件夹中的图片路径都保存在String[] iamges数组中
在我取出这个数组中元素的时候出现了这个异常java.io.FileNotFoundException: p1.jpg, 它说未找到这长图片,但是我遍历这个数组
都能将里面的元素全部遍历出来,跪求大神解释一下这个是为什么

5个回答

bdmh
bdmh   Ds   Rxr 2015.06.03 17:28

你没有获得assets的路径,加上这个路径才行
http://blog.csdn.net/liaowenfeng/article/details/17717289

baidu_28357063
baidu_28357063 那为什么集合里会有元素呢,而且我都可以遍历出来 这是怎么回事呢?
接近 3 年之前 回复
baidu_28357063
baidu_28357063   2015.06.03 18:41

这是我的代码
public class MainActivity extends Activity {

private Button nextBtn;
private AssetManager assetManager = null;
private String[] images = null;
private int currentImage = 0;
private ImageView image;
private Bitmap bitmap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();

// InputStream is = null;
// try {
// is = assetManager.open(images[currentImage]);
// } catch (IOException e) {
// e.printStackTrace();
// }
// bitmap = BitmapFactory.decodeStream(is);
// image.setImageBitmap(bitmap);

    nextBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            InputStream is = null;
            if(currentImage >= images.length){
                currentImage = 0;
            }else {
                    currentImage++;
                    if(currentImage >= images.length){
                        currentImage = 0;
                    }
                }
                try {
                    is = assetManager.open(images[currentImage]);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                bitmap = BitmapFactory.decodeStream(is);
                image.setImageBitmap(bitmap);
            }

    });

}

private void initView() {
    nextBtn = (Button) findViewById(R.id.next_btn);
    image = (ImageView) findViewById(R.id.iamge);
    assetManager = getAssets();
    try {
        images = assetManager.list("img");
        System.out.println("长度:"+images.length);
        for(int i = 0;i<images.length;i++){
            System.out.println(images[i]);
        }
        InputStream is = null;
        try {
            is = assetManager.open(images[0]);
        } catch (IOException e) {
            e.printStackTrace();
        }
        bitmap = BitmapFactory.decodeStream(is);
        image.setImageBitmap(bitmap);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}
哪位大神帮我看看哪里出问题了
首先images集合里是有元素的 可以遍历出来,但是取的时候就取不出来为空

baidu_28357063
baidu_28357063   2015.06.03 18:42

这是我的代码
public class MainActivity extends Activity {

private Button nextBtn;
private AssetManager assetManager = null;
private String[] images = null;
private int currentImage = 0;
private ImageView image;
private Bitmap bitmap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();

// InputStream is = null;
// try {
// is = assetManager.open(images[currentImage]);
// } catch (IOException e) {
// e.printStackTrace();
// }
// bitmap = BitmapFactory.decodeStream(is);
// image.setImageBitmap(bitmap);

    nextBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            InputStream is = null;
            if(currentImage >= images.length){
                currentImage = 0;
            }else {
                    currentImage++;
                    if(currentImage >= images.length){
                        currentImage = 0;
                    }
                }
                try {
                    is = assetManager.open(images[currentImage]);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                bitmap = BitmapFactory.decodeStream(is);
                image.setImageBitmap(bitmap);
            }

    });

}

private void initView() {
    nextBtn = (Button) findViewById(R.id.next_btn);
    image = (ImageView) findViewById(R.id.iamge);
    assetManager = getAssets();
    try {
        images = assetManager.list("img");
        System.out.println("长度:"+images.length);
        for(int i = 0;i<images.length;i++){
            System.out.println(images[i]);
        }
        InputStream is = null;
        try {
            is = assetManager.open(images[0]);
        } catch (IOException e) {
            e.printStackTrace();
        }
        bitmap = BitmapFactory.decodeStream(is);
        image.setImageBitmap(bitmap);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}
哪位大神帮我看看哪里出问题了
首先images集合里是有元素的 可以遍历出来,但是取的时候就取不出来为空

datou431
datou431   Rxr 2015.06.18 11:11

没有获得assets的路径,加上这个路径才行

qioutiandeyun
qioutiandeyun   2018.03.28 10:38

大哥你open的时候没有加你的img这个路径啊,当然没有了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!