2016-06-12 94 views
0

當我打開我的畫廊以選擇秀中的照片時。我得到這個錯誤。它返回null。 這個幻燈片演示擴展ListActivity:無法加載圖片庫中的圖片

public static Bitmap getThumbnail(Uri uri, ContentResolver cr, 
     BitmapFactory.Options options) 
    { 
     int id = Integer.parseInt(uri.getLastPathSegment()); 

     Bitmap bitmap = MediaStore.Images.Thumbnails.getThumbnail(cr, id, 
     MediaStore.Images.Thumbnails.MICRO_KIND, options);   

     return bitmap; 
    } 

和這裏的另一個SlideshowEditor擴展ListActivity:

private class LoadThumbnailTask extends AsyncTask<Object,Object,Bitmap> 
     { 
    ImageView imageView; // displays the thumbnail 

    // load thumbnail: ImageView, MediaType and Uri as args 
    @Override 
    protected Bitmap doInBackground(Object... params) 
    { 
    imageView = (ImageView) params[0]; 

    return Slideshow.getThumbnail((Uri) params[1], 
     getContentResolver(), new BitmapFactory.Options()); 
    } // end method doInBackground 

    // set thumbnail on ListView 
    @Override 
    protected void onPostExecute(Bitmap result) 
    { 
    super.onPostExecute(result); 
    imageView.setImageBitmap(result); 
    } // end method onPostExecute 
    } 

protected Bitmap doInBackground(Object... params) 
    { 
    imageView = (ImageView) params[0]; 

    return Slideshow.getThumbnail((Uri) params[1], 
     getContentResolver(), new BitmapFactory.Options()); 
    } 

我的logcat:

而在java.util中在android.os.AsyncTask $ 3.done(AsyncTask.java:300) 執行doInBackground() 在java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) 發生

錯誤.concurrent.FutureTask.setException(FutureTask.java:222) 在java.util.concurrent.FutureTask.run(FutureTask.java:242) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:841)導致:java.lang.NumberFormatException:Invalid int:「image: 54305「 at java.lang.Integer.invalidInt(Integer.java:137) at java.lang.Integer.pa rse(Integer.java:374) at java.lang.Integer.parseInt(Integer.java:365) at java.lang.Integer.parseInt(Integer.java:331) at com.harshadjadav.slideshow.Slideshow。 getThumbnail(Slideshow.java:328) 在com.harshadjadav.slideshow.SlideshowEditor $ LoadThumbnailTask​​.doInBackground(SlideshowEditor.java:225) 在com.harshadjadav.slideshow.SlideshowEditor $ LoadThumbnailTask​​.doInBackground(SlideshowEditor.java:215) 在android.os.AsyncTask $ 2.call(AsyncTask.java:288) 在java.util.concurrent.FutureTask.run(FutureTask.java:237) 在

java.util.concurrent.ThreadPoolExecutor.runWorker(的ThreadPoolExecutor的.java:1112)

+1

[如何從圖庫加載圖像視圖中的圖像?](http://stackoverflow.com/questions/13023788/how-to-load-an-image-in-image-view-from-gallery) – Ironman

回答

0

在你getThumbnail()法,Uri.getLastPathSegment()將返回String所以你收到此錯誤,您正在嘗試解析String對象int

您可以更新方法

public static Bitmap getThumbnail(ContentResolver cr, String path) throws Exception { Cursor ca = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[] { MediaStore.MediaColumns._ID }, MediaStore.MediaColumns.DATA + "=?", new String[] {path}, null); if (ca != null && ca.moveToFirst()) { int id = ca.getInt(ca.getColumnIndex(MediaStore.MediaColumns._ID)); ca.close(); return MediaStore.Images.Thumbnails.getThumbnail(cr, id, MediaStore.Images.Thumbnails.MICRO_KIND, null); } ca.close(); return null; } 

而且可以調用像

getThumbnail(getContentResolver, uri.tostring) 
+0

那麼如何解決它? – king

+0

看到這個線程http://stackoverflow.com/questions/5548645/get-thumbnail-uri-path-of-the-image-stored-in-sd-card-android –

+0

我不明白: - ((((( ( – king