我需要使用一个ActionBar,所以我需要将targetSdkVersion更改为11. 它目前是targetSdkVersion =“8”。 它适用于targetSdkVersion =“8”,但是当我将其更改为targetSdkVersion =“11”时,它崩溃。当我更改targetSdkVersion时,为什么我的程序崩溃?
错误来源于此行:imageA = new ImageAdapter(this,url);
错误:
- 03-21 22:09:56.710:E/AndroidRuntime(21824):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.ameba.api/com.ameba .api.Home}:android.os.NetworkOnMainThreadException
我已经试过在的AsyncTask <封装几乎每一个方法>的错误不再抛出,但ImageAdapter()(永远不会被调用)不工作时我这样做。
这是一段代码。
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.home);
title = (TextView)findViewById(R.id.title);
description = (TextView)findViewById(R.id.description);
gridView = (GridView)findViewById(R.id.propGridView);
thumbNail = (ImageView)findViewById(R.id.propertyThumbnail);
//thumbNail.setImageBitmap(bm);
gridView.setVerticalSpacing(3);
gridView.setHorizontalSpacing(3);
//checkHistory();
ImageDownloader.Mode mode = ImageDownloader.Mode.CORRECT;
historyStack.pushValue(url); // Push Value onto history stack
Log.i("No history:",url+" "+historyStack.getStack().size()); //Debug
imageA= new ImageAdapter(this,url);
imageA.getImageDownloader().setMode(mode); //Set download mode to cache
gridView.setAdapter(imageA); //Populate gridView with downloaded bitmap
}
public class ImageAdapter extends BaseAdapter {
//intialize variables
private final ImageDownloader imageDownloader ;
private int SIZE;
private List<Video> myVideos;
private Context mContext;
private String xmlurl;
private Parser parser = new Parser();
/*
* Constructor
* @params: Context
* @params: XML url
*/
public ImageAdapter(Context c, String url){
mContext = c;
xmlurl = url;
parser.runParser(xmlurl);
imageDownloader = new ImageDownloader();
}
/*
* (non-Javadoc)
* @see android.widget.Adapter#getView(int, android.view.View, android.view.ViewGroup)
*/
public View getView(final int position, View convertView, ViewGroup parent) {
final ImageView view;
if (convertView == null) {
view= new ImageView(mContext);
view.setLayoutParams(new GridView.LayoutParams(175,175));
view.setPadding(1, 1, 1, 1);
}
else{
view = (ImageView)convertView;
}
Log.i("Assingning view","");
imageDownloader.download(parser.getList().get(position).getThumbNail(),view);
return view;
}
/*
* (non-Javadoc)
* @see android.widget.Adapter#getCount()
*/
public int getCount() {
SIZE = parser.getCount();
return SIZE;
}
/*
* (non-Javadoc)
* @see android.widget.Adapter#getItem(int)
*/
public String getItem(int position) {
return myVideos.get(position).toString();
}
/*
* (non-Javadoc)
* @see android.widget.Adapter#getItemId(int)
*/
public long getItemId(int position) {
return 0;
}
public void setUrl(String url){
xmlurl = url;
}
/*
* getMethod
*/
public ImageDownloader getImageDownloader() {
return imageDownloader;
}
}
是的,我做到了,错误不再被抛出。但是,图像不再出现。 – Fabii 2012-03-22 19:25:08
看看一些源代码做懒惰图像加载[这里](https://github.com/thest1/LazyList)。如果你实现它,你将拥有一个非常快速的即插即用图像加载器来完成你的活动。它也非常高效。这将防止您在下载完成时处理回调以及管理您的图像查看,我想像的是您遇到问题的地方,并且正在导致图像显示出来 – dymmeh 2012-03-22 19:29:13
谢谢感谢您的帮助。 – Fabii 2012-03-23 04:19:11