安卓初学--网络图片加载问题

GPU小码农 2014-12-21 07:52:26
报错如下:
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
我是看着别人例子做的。
例子可以,但是我从MainActivity跳转到第二个Activity显示网络图片的时候就崩溃了。求大神啊!!搞了半天了,累觉不爱!
package com.zjc.zjchomework;



import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import com.zjc.zjchomework.R;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;

public class ImageViewActivity extends Activity
{
public String urlString;
ListView mListView = null;
private ImageView imageIV;
private Handler handler=new Handler(); //在主线程中创建handler
private ImageService service;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.imageview_);
Intent intent=getIntent();
//打开“邮件”
//Bundle urlBundle = intent.getBundleExtra("urlAdress");
//获得网络图片地址
urlString = "http://m4.auto.itc.cn/car/120/95/90/Img1579095_120.jpg";//urlBundle.getString("url");
imageIV = (ImageView) this.findViewById(R.id.imageView1);
ShowImageFromURL("http://m4.auto.itc.cn/car/120/95/90/Img1579095_120.jpg");
}

public void ShowImageFromURL(final String url)
{
//把图片放在一个新的线程里面来读取.
new Thread()
{//创建一个新的线程
public void run()
{
try {
String address = "http://m4.auto.itc.cn/car/120/95/90/Img1579095_120.jpg";// addressET.getText().toString();
//由于网络操作比较耗时,所以在新线程中操作
final Bitmap image = service.getImage(address);
handler.post(new Runnable()
{
public void run()
{
imageIV.setImageBitmap(image);//新线程更新界面,需要使用handler
}
});
}
catch (Exception e)
{
e.printStackTrace();
Toast.makeText(getApplicationContext(), "服务器忙,请稍后再试!", 0).show();
}
}
}.start();

}
}
/*
*
* */
...全文
109 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
水的川 2014-12-21
  • 打赏
  • 举报
回复
只要在run()方法中加入 Looper.prepare()就可以解决问题了,但是出现这种问题的原因是因为Android中不能在子线程中来刷新UI线程。建议是在你的子线程中添加hander来发送消息更新线程。具体可见http://blog.csdn.net/a7a9a68/article/details/7841762

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧