Android在4.0之前的版本 支持在主线程中访问网络,4.0以后不支持。
解决方法:
1.通过新的线程访问网络,
2.Handler更新View
//在onCreate 方法中:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.vpdn_app);
handler = new Handler(){
public void handleMessage(Message msg) {
if (msg.what == 1) {
java.lang.System.out.println("xml-->" + xml);
if (null == xml) {
Toast toast = Toast.makeText(vpdnListsActivity.this, "无法连接远程服务器", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP | Gravity.CENTER, 0, 220);
toast.show();
}
apnInfos = parse(xml);
SimpleAdapter simpleAdapter = buildSimpleAdapter(apnInfos);
// 将这个SimpleAdapter对象设置到ListActivity当中
setListAdapter(simpleAdapter);
}
super.handleMessage(msg);
}
};
}
//调用的方法:
private int updateListView() {
// 下载包含所有apn基本信息的xml文件
new Thread(){
public void run(){
xml = downloadXML(http://192.168.50.23:80/fzw/vpdntest.xml); Message msg = new Message();
msg.what = 1;
handler.sendMessage(msg);
}
}.start();
return 0;
}