我需要使用一個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