Форум программистов, компьютерный форум CyberForum.ru

Загрузка в ImageView картинки по ссылке в отдельном потоке. Исправить код - Android

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
algoritm256
 Аватар для algoritm256
9 / 9 / 1
Регистрация: 05.02.2012
Сообщений: 147
Записей в блоге: 1
24.04.2014, 04:08     Загрузка в ImageView картинки по ссылке в отдельном потоке. Исправить код #1
Здравствуйте! Пытаюсь загрузить картинку по ссылке из инета в ImageView в отдельном потоке. Поток реализовывал путем перегрузки метода run, но при запуске ничего не происходит. Подскажите пожалуйста, где туплю. Заранее спасибо!

MainActivity
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.example.informerkg;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
 
public class MainActivity extends Activity implements OnClickListener {
 
    ImageButton btnMeteo;
    Intent intent;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        btnMeteo= (ImageButton) findViewById(R.id.btnMeteo);
        
        btnMeteo.setOnClickListener(this);
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
            intent= new Intent(this, MeteoActivity.class);
            startActivity(intent);
        }
    }
 
}
MeteoActivity
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.example.informerkg;
 
import java.net.URL;
 
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.Toast;
 
public class MeteoActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.meteo);
        
        ImageView imgMeteo= (ImageView) findViewById(R.id.imgMeteo);
        
        String url_meteo= "http://www.informer.kg/pog/pngs/informer12.png";
        
        new LoadImageTask(imgMeteo, url_meteo);
        setResult(RESULT_OK);
        finish();
    }
}
Класс LoadImageTask, в котором и запускается поток, загружающий картинку с сети
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import java.io.InputStream;
import java.net.URL;
 
import android.graphics.drawable.Drawable;
import android.widget.ImageView;
 
public class LoadImageTask implements Runnable {
    private ImageView iv= null;
    private  String url_meteo= null;
 
    public LoadImageTask(ImageView iv, String url_meteo){
        this.iv= iv;
        this.url_meteo= url_meteo;
        new Thread(this).start();
    }
 
    private Drawable LoadImageFromWebOperations(String url_meteo) {
        try {
            InputStream is = (InputStream) new URL(url_meteo).getContent();
            Drawable d = Drawable.createFromStream(is, "meteo.png");
            return d;
        } catch (Exception e) {
            //Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG);
            return null;
        }
    }
 
    @Override
    public void run() {
        // TODO Auto-generated method stub
        try{
            iv.setImageDrawable(LoadImageFromWebOperations(url_meteo));
        }
        catch(Exception e){
            //Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG);
            return;
        }
    }
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2014, 04:08     Загрузка в ImageView картинки по ссылке в отдельном потоке. Исправить код
Посмотрите здесь:

Android Загрузка картинки
Android Загрузка картинки на сервер
Загрузка картинки из Ethernet-а в imageview Android
Android ImageView - загрузка картинки из SDCARD
Android Создание view элементов в отдельном потоке
Android Узнать ширину и высотку картинки в ImageView, которая загружена в android:src
Android Выполнение кода в отдельном потоке
Скопировать картинку из одной ImageView в другую ImageView Android
Android Как отменить выполнение кода в сервисе, который запущен в отдельном потоке?
Отображение картинки в ImageView полученной из ссылки Android
Загрузка изображения в imageview Android
Отрисовка данных в отдельном потоке Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
glnix
14 / 14 / 5
Регистрация: 08.04.2013
Сообщений: 75
24.04.2014, 07:55     Загрузка в ImageView картинки по ссылке в отдельном потоке. Исправить код #2
Доступ из порожденного потока к GUI потоку напрямую запрещен.
Вот хорошая статья на эту тему:
http://habrahabr.ru/company/eastbanctech/blog/192998/
Yandex
Объявления
24.04.2014, 07:55     Загрузка в ImageView картинки по ссылке в отдельном потоке. Исправить код
Ответ Создать тему
Опции темы

Текущее время: 06:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru