2017-10-01 15 views
1

J'utilise la bibliothèque pour choisir des photos dans Gallery.Deux chemins d'image retournés dans onActivityResult sont fusionnés en un résultant en java.io.FileNotFoundException

Voici le code:

tapToUploadLabel.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      ImagePicker.create(MainActivity.this) 
        .returnAfterFirst(false) // set whether pick or camera action should return immediate result or not. For pick image only work on single mode 
        .imageTitle("Tap to select") // image selection title 
        .single() // single mode 
        .multi() // multi mode (default mode) 
        .limit(3) // max images can be selected (99 by default) 
        .showCamera(true) // show camera or not (true by default) 
        .imageDirectory("Camera") // directory name for captured image ("Camera" folder by default) 
        .enableLog(false) // disabling log 
        .start(REQUEST_CODE_PICKER); // start image picker activity with request code 
     } 
    }); 

est ici onActivtyResult():

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == REQUEST_CODE_PICKER && resultCode == RESULT_OK && data != null) { 
      ArrayList<Image> images = (ArrayList<Image>) ImagePicker.getImages(data); 
      printImages(images); 
      mViewPager.setAdapter(mCustomPagerAdapter); 
     } 
    } 

est ici printImages():

private void printImages(List<Image> images) { 
     if (images == null) return; 

     if (imageArray.size() >= 1) { 
      imageArray.clear(); 
     } 

     StringBuilder stringBuffer = new StringBuilder(); 
     for (int i = 0, l = images.size(); i < l; i++) { 
      stringBuffer.append(images.get(i).getPath()).append("\n"); 
      imageArray.add(Uri.parse(stringBuffer.toString().trim())); 
     } 
} 

Maintenant, j'utilise ce imageArray pour définir l'image dans ImageView comme celui-ci :

ImageView imageView = (ImageView) itemView.findViewById(R.id.imageView); 
Log.d("imageArrayContains", imageArray.get(position).toString()); 
imageView.setImageURI(imageArray.get(position)); 

Le problème est que lorsque je choisis seulement 1 image, il se prépare dans le ImageView sans aucune erreur, mais quand je choisir 2 ou plus d'images, j'obtiens cette erreur:

E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/Pictures/Kwote/1506843168441.jpg 
/storage/emulated/0/Pictures/Camera/IMG_20171001_035028145702152.jpg: open failed: ENOENT (No such file or directory) 

parce que 2 sont se chemins de fichiers fusionnés en un seul comme celui-ci ici: /storage/emulated/0/Pictures/Kwote/1506843168441.jpg /storage/emulated/0/Pictures/Camera/IMG_20171001_035028145702152.jpg

Je suis incapable de comprendre comment puis-je empêcher que cela se fusionner pour que je puisse obtenir toutes les images choisies chargées dans mon ImageView .

Aidez-nous s'il vous plaît.

Répondre

1

Vous ajoutez les deux chemins dans un même StringBuilder.

Placez-le dans la boucle for. Je crois que vous n'aurez pas du tout besoin de StringBuilder. Il suffit d'utiliser imageArray.add(Uri.parse (images.get(i).getPath().trim()));