Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
algoritm256
9 / 9 / 5
Регистрация: 05.02.2012
Сообщений: 147
Записей в блоге: 1
1

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

24.04.2014, 04:08. Просмотров 2308. Ответов 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;
        }
    }
 
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2014, 04:08
Ответы с готовыми решениями:

GDI+. Почему в отдельном потоке картинки сохраняются как белые прямоугольники, а в основном потоке - всё Ок?
Всем привет, делаю функцию уменьшения картинок при помощи библиотеки GDI+, в отдельном потоке...

Загрузка в DataTable из БД в отдельном потоке
Всем привет. Работаю над небольшой программкой, для просмотра таблицы БД Access 2007. Состоит из...

Вывод картинки на панель в отдельном потоке
Метод run() объявлен в классе, который реализует интерфейс Runnable. tForSlides - атрибут этого же...

Загрузка картинки из Ethernet-а в imageview
Здравствуйте. Есть код public String grabImageFromUrl(String url, String path) { try {...

1
glnix
14 / 14 / 5
Регистрация: 08.04.2013
Сообщений: 75
24.04.2014, 07:55 2
Доступ из порожденного потока к GUI потоку напрямую запрещен.
Вот хорошая статья на эту тему:
http://habrahabr.ru/company/eastbanctech/blog/192998/
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2014, 07:55

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

ImageView - загрузка картинки из SDCARD
Написал класс который отображает в ImageView картинку которая лежит в SDCARD. public class...

Загрузка картинки на сервер по ссылке, отправка, удаление картинки
Какие есть методы, чтобы: а) Загрузить на сервер в папку ../temp картинку по ссылке (например,...

Выполнить код в отдельном потоке
Доброго времени суток уважаемые! Помогите пожалуйста разобраться с основами многопоточности. ...

Второстепенный код в отдельном потоке
Доброго времени!!! Помогите! по нажатии на кнопку начинает выполняться код, он может выполняться...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.