2016-04-28 6 views
1

Я создаю проект такой же, как этот учебник androidhive ранее он работал, но теперь изображение не показывает мне с поддержкой разрешения хранения и я получаю ошибку как этотпогрузчик Изображение не работает

java.lang.ClassCastException: android.support.v7.widget.TintContextWrapper cannot be cast to android.app.Activity at com.example.admin.imageloading.ImageLoader$PhotosLoader.run(ImageLoader.java:143)

линии нет 143 ошибка

class PhotosLoader implements Runnable { 
     PhotoToLoad photoToLoad; 
     PhotosLoader(PhotoToLoad photoToLoad){ 
      this.photoToLoad=photoToLoad; 
     } 

     @Override 
     public void run() { 
      if(imageViewReused(photoToLoad)) 
       return; 
      Bitmap bmp=getBitmap(photoToLoad.url); 
      memoryCache.put(photoToLoad.url, bmp); 
      if(imageViewReused(photoToLoad)) 
       return; 
      BitmapDisplayer bd=new BitmapDisplayer(bmp, photoToLoad); 
      try { 
       Activity a = (Activity) photoToLoad.imageView.getContext(); 
       a.runOnUiThread(bd); 
      }catch (Exception e){ 
       e.printStackTrace(); 
      } 

     } 
    } 

это мой код, пожалуйста, кто-нибудь помочь мне

+0

добавить еще какой-нибудь код, пожалуйста, и использовать библиотеку picasso insted из этих старых классов –

+0

Какой IDE вы использовали для Android-студии или Eclipece ?? –

+0

@ArpitPatel ссылается на androidhive, если вы хотите получить больше информации о кодах, которую я загрузил в тот же код и выполнил. Я использую android studio –

ответ

2

Если вы хотите установить изображение без использования каких-либо сторонних библиотек, так попробуйте этот

try { 
    URL newurl = new URL(image_url); 
    Bitmap mIcon_val = BitmapFactory.decodeStream(newurl.openConnection() .getInputStream()); 
    imageView.setImageBitmap(mIcon_val); 
} catch (IOException e) { 
e.printStackTrace(); 
} 

ИЛИ

использование Picasso библиотека

добавить в ваш файл Gradle

dependencies { 

    compile "com.squareup.picasso:picasso:2.4.0" 

} 

Затем добавить разрешение Интернет в андроида menifest файл

<uses-permission android:name="android.permission.INTERNET" /> 

Затем добавьте следующий код в AndroidLoadImageFromURLActivity

public class AndroidLoadImageFromURLActivity extends Activity { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

      // Loader image - will be shown before loading image 
      int loader = R.drawable.loader; 

      // Imageview to show 
      ImageView image = (ImageView) findViewById(R.id.image); 

      // Image url 
      String image_url = "http://api.androidhive.info/images/sample.jpg"; 

      //Loading image from below url into imageView 

     Picasso.with(AndroidLoadImageFromURLActivity.this) 
       .load(url) 
       .into(image); 

     } 
    } 
+0

Этот ответ идет с моим ответом. Вау. –

+0

да, потому что это очень удобно. –

+0

@ArpitPatel, как сделать кеш изображения –

0

Использование Glide или Пикассо для Im возраста загрузки по URL.

Для Glide, добавьте

repositories { 
    mavenCentral() // jcenter() works as well because it pulls from Maven Central 
} 

dependencies { 
    compile 'com.github.bumptech.glide:glide:3.7.0' 
    compile 'com.android.support:support-v4:19.1.0' 
} 

Тогда:

ImageView imageView = (ImageView) findViewById(R.id.my_image_view); 

Glide.with(this).load("http://api.androidhive.info/images/sample.jpg").into(imageView); 

или посмотреть документацию для деталей. https://github.com/bumptech/glide.

Для Пикассо, добавить Завис

compile 'com.squareup.picasso:picasso:2.5.2' 

После этого Используйте этот код для загрузки изображения с URL:

Picasso.with(context) 
    .load(url) 
    .resize(50, 50) 
    .centerCrop() 
    .into(imageView); 

Если вы хотите, чтобы увидеть детали следовать этому: http://square.github.io/picasso/

+0

Мне не нужен lib. Я хочу, чтобы простой код кэшировал и отображал изображение. –

+0

Очень просто использовать эти библиотеки, чем пытаться писать багги-коды. Сейчас они используются в течение нескольких дней. То, что вы можете сделать, только одна строка кода массивна. –

+0

да, вы правы, но наше требование не нужно использовать какой-либо третьей стороне lib –

1

Ваша задача заключается в следующем:

Activity a = (Activity) photoToLoad.imageView.getContext(); 

Вы triying, чтобы получить контекст своей деятельности от представления. С appcompat-v7:24.0.0 контекст из изображений не работает, как раньше, поэтому теперь вы не можете этого сделать.

У вас есть два варианта: понизить или найти другой способ передать контекст вашему классу.

 Смежные вопросы

  • Нет связанных вопросов^_^