2015-12-13 2 views
4

Я использую скольжение для ImageView, и я хочу, чтобы получить растровое изображение из этого imageview--getDrawable() дает нулевой объект при попытке получить растровое изображение из ImageView

ImageView imageView = (ImageView) findViewById(R.id.dp); 
Glide.with(this).load("http://graph.facebook.com/1615242245409408/picture?type=large").into(imageView); 
Bitmap fbbitmap2 = ((BitmapDrawable)imageView.getDrawable()).getBitmap(); 

Но это дает

java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()' on a null object reference 

Выручи меня.

ответ

5

Glide загружает изображение асинхронно, поэтому ваш тест по растровому изображению сразу же после запуска этой операции загрузки возвращает null, так как изображение еще не загружено.

Чтобы знать, когда ваш образ действительно был загружен, вы можете установить слушателя в запросе Glide, например .:

Glide.with(this) 
    .load("http://graph.facebook.com/1615242245409408/picture?type=large") 
    .listener(new RequestListener<Uri, GlideDrawable>() { 
     @Override 
     public boolean onException(Exception e, Uri model, Target<GlideDrawable> target, boolean isFirstResource) { 
      return false; 
     } 

     @Override 
     public boolean onResourceReady(GlideDrawable resource, Uri model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
      // drawable is in resource variable 
      // if you really need to access the bitmap, you could access it using ((GlideBitmapDrawable) resource).getBitmap() 
      return false; 
     } 
    }) 
    .into(imageView);