Valeu pela dica Pedro, mas não consegui implementar... da pau e sai da aplicação sem a menor explicação...
Pena, pois o codigo fica muito limpo...
Em segunda-feira, 1 de julho de 2013 18h17min43s UTC-3, Pedro Subutzki escreveu:
-- Em segunda-feira, 1 de julho de 2013 18h17min43s UTC-3, Pedro Subutzki escreveu:
Você pode usar algum lib para fazer isso também:Em 1 de julho de 2013 14:46, Vinny Valente <irmaoca...@gmail.com> escreveu:Brigadão Rodrigo,O conhecimento q vc passou foi fundamental(aprendi muito com sua explicação), porem tive q dar uma adequadinha basica...Nessa linha a classe precisa extender da activityImageView imgView =(ImageView)findViewById(R.id.teste); Então fiz assim:public class LoadImageTask extends AsyncTask <String, Void, Drawable> { ProgressDialog progress; private WeakReference<ImageView> imageViewReference; public LoadImageTask(ImageView imageView) { imageViewReference = new WeakReference<ImageView>(imageView); } @Override protected Drawable doInBackground(String... url) { Drawable drawable = null; try { drawable = LoadImageFromWebOperations( url[0]); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return drawable; } private Drawable LoadImageFromWebOperations( String url) throws MalformedURLException, IOException { InputStream is = (InputStream) new URL(url).getContent(); Drawable d = Drawable.createFromStream(is, "src name"); return d; } protected void onPostExecute(Drawable drawable) { imageViewReference.get(). setImageDrawable(drawable); } } E na chamada passei o objeto ImageView:LoadImageTask task = new LoadImageTask(imageView); task.execute(url);
Em sexta-feira, 28 de junho de 2013 19h36min38s UTC-3, Rodrigo Piovezan escreveu:Olá Vinny,Essa exception ocorre porque você está tentando realizar uma operação de acesso à rede dentro da thread principal, que é reservada para operações de UI (user interface). Faça essa operação em uma thread separada, por exemplo usando uma AsyncTask (que executa o que estiver dentro do método doInBackground() numa thread à parte):
class LoadImageTask extends AsyncTask<String, Void, Drawable> {
protected Drawable doInBackground(String... url) {
Drawable drawable = null;
try {
drawable = LoadImageFromWebOperations(url[0]);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return drawable;
}
protected void onPostExecute(Drawable drawable) {
ImageView imgView =(ImageView)findViewById(R.id.teste);
imgView.setImageDrawable(drawable);
}
}O que está acontecendo é que a asynctask espera o método doInBackground() executar, e quando ele termina passa a ser executado o método onPostExecute(), que volta a ter acesso à thread de UI e pode executar operações de UI, como por exemplo chamar setImageDrawable() para exibir o drawable.
Para chamar a asynctask no seu código você faz assim:LoadImageTask task = new LoadImageTask();
task.execute("http://marciocardoso.net/img/Linux_avatar.jpg ");
[]'sRodrigoOn Fri, Jun 28, 2013 at 4:57 PM, Vinny Valente <irmaoca...@gmail.com> wrote:
Boa tarde Galera,Estou tentando exibir uma imagem da web, mas ta complicado.Todas as formas que eu li caem na mesmo esquema, justamente onde da o erro...Nessa linhaInputStream is = (InputStream) new URL(url).getContent();O getContent() sempre cai na exeption...Segue erro06-28 16:29:00.450: E/AndroidRuntime(14548): FATAL EXCEPTION: main06-28 16:29:00.450: E/AndroidRuntime(14548): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.slideshow/com.example.slideshow. MainActivity}: android.os.NetworkOnMainThread Exception 06-28 16:29:00.450: E/AndroidRuntime(14548): at android.app.ActivityThread.performLaunchActivity(ActivityThr ead.java:2100) 06-28 16:29:00.450: E/AndroidRuntime(14548): at android.app.ActivityThread.handleLaunchActivity(ActivityThre ad.java:2125) 06-28 16:29:00.450: E/AndroidRuntime(14548): at android.app.ActivityThread.access$600(ActivityThread.java: 140) 06-28 16:29:00.450: E/AndroidRuntime(14548): at android.app.ActivityThread$H.handleMessage(ActivityThread.ja va:1227) 06-28 16:29:00.450: E/AndroidRuntime(14548): at android.os.Handler.dispatchMessage(Handler.java:99) 06-28 16:29:00.450: E/AndroidRuntime(14548): at android.os.Looper.loop(Looper.java:137) 06-28 16:29:00.450: E/AndroidRuntime(14548): at android.app.ActivityThread.main(ActivityThread.java:4898) 06-28 16:29:00.450: E/AndroidRuntime(14548): at java.lang.reflect.Method.invokeNative(Native Method) 06-28 16:29:00.450: E/AndroidRuntime(14548): at java.lang.reflect.Method.invoke(Method.java:511) 06-28 16:29:00.450: E/AndroidRuntime(14548): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(Z ygoteInit.java:1006) 06-28 16:29:00.450: E/AndroidRuntime(14548): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 06-28 16:29:00.450: E/AndroidRuntime(14548): at dalvik.system.NativeStart.main(Native Method) 06-28 16:29:00.450: E/AndroidRuntime(14548): Caused by: android.os.NetworkOnMainThreadException 06-28 16:29:00.450: E/AndroidRuntime(14548): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork( StrictMode.java:1118) 06-28 16:29:00.450: E/AndroidRuntime(14548): at java.net.InetAddress.lookupHostByName(InetAddress.java:385) 06-28 16:29:00.450: E/AndroidRuntime(14548): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 06-28 16:29:00.450: E/AndroidRuntime(14548): at java.net.InetAddress.getAllByName(InetAddress.java:214) 06-28 16:29:00.450: E/AndroidRuntime(14548): at libcore.net.http.HttpConnection.<init>(HttpConnection.java: 70) 06-28 16:29:00.450: E/AndroidRuntime(14548): at libcore.net.http.HttpConnection.<init>(HttpConnection.java: 50) 06-28 16:29:00.450: E/AndroidRuntime(14548): at libcore.net.http.HttpConnection$Address.connect( HttpConnection.java:340) 06-28 16:29:00.450: E/AndroidRuntime(14548): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool. java:87) 06-28 16:29:00.450: E/AndroidRuntime(14548): at libcore.net.http.HttpConnection.connect(HttpConnection.java: 128) 06-28 16:29:00.450: E/AndroidRuntime(14548): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine. java:315) 06-28 16:29:00.450: E/AndroidRuntime(14548): at libcore.net.http.HttpEngine.connect(HttpEngine.java:310) 06-28 16:29:00.450: E/AndroidRuntime(14548): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.jav a:289) 06-28 16:29:00.450: E/AndroidRuntime(14548): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239) 06-28 16:29:00.450: E/AndroidRuntime(14548): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnec tionImpl.java:80) 06-28 16:29:00.450: E/AndroidRuntime(14548): at java.net.URLConnection.getContent(URLConnection.java:190) 06-28 16:29:00.450: E/AndroidRuntime(14548): at java.net.URL.getContent(URL.java:447) 06-28 16:29:00.450: E/AndroidRuntime(14548): at com.example.slideshow.MainActivity.LoadImageFromWebOperation s(MainActivity.java:114) 06-28 16:29:00.450: E/AndroidRuntime(14548): at com.example.slideshow.MainActivity.onCreate(MainActivity. java:38) 06-28 16:29:00.450: E/AndroidRuntime(14548): at android.app.Activity.performCreate(Activity.java:5206) 06-28 16:29:00.450: E/AndroidRuntime(14548): at android.app.Instrumentation.callActivityOnCreate(Instrumenta tion.java:1083) 06-28 16:29:00.450: E/AndroidRuntime(14548): at android.app.ActivityThread.performLaunchActivity(ActivityThr ead.java:2064) 06-28 16:29:00.450: E/AndroidRuntime(14548): ... 11 moreCodigo:ImageView imgView =(ImageView)findViewById(R.id.teste); Drawable drawable = null;try {drawable = LoadImageFromWebOperations("http://marciocardoso.net/img/Lin ");ux_avatar.jpg } catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}imgView.setImageDrawable(drawable); private Drawable LoadImageFromWebOperations(String url) throws MalformedURLException, IOException { InputStream is = (InputStream) new URL(url).getContent();Drawable d = Drawable.createFromStream(is, "src name");return d;}To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group..com .--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com .
For more options, visit https://groups.google.com/groups/opt_out .
--
Abraços,
Pedro Subutzki
__________________________________________ HADI - Makes SQLite in Android easy and simple
https://github.com/PepeuCps/Hadi
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.






0 comentários:
Postar um comentário