Java xml解析应用程序强制关闭,internet断开连接
它在wifi或3g上工作正常,但在两个断开连接的情况下强制关闭。 我从一个教程中学习,所以我不确定,但我相信在代码中考虑了互联网断开 完整日志 代码:Java xml解析应用程序强制关闭,internet断开连接,java,android,runtime-error,Java,Android,Runtime Error,它在wifi或3g上工作正常,但在两个断开连接的情况下强制关闭。 我从一个教程中学习,所以我不确定,但我相信在代码中考虑了互联网断开 完整日志 代码: package org.tatvamoksh.tml; 导入java.util.ArrayList; 导入java.util.HashMap; 导入org.w3c.dom.Document; 导入org.w3c.dom.Element; 导入org.w3c.dom.NodeList; 导入android.app.ListActivity; 导入a
package org.tatvamoksh.tml;
导入java.util.ArrayList;
导入java.util.HashMap;
导入org.w3c.dom.Document;
导入org.w3c.dom.Element;
导入org.w3c.dom.NodeList;
导入android.app.ListActivity;
导入android.app.ProgressDialog;
导入android.content.Context;
导入android.net.ConnectivityManager;
导入android.net.NetworkInfo;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.widget.ListAdapter;
导入android.widget.ListView;
导入android.widget.simpledapter;
导入android.widget.Toast;
公共类更新扩展了ListActivity{
公共阵列列表;
公共列表适配器;
公共进程对话;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.updates\u项);
mylist=新的ArrayList();
adapter=new simpledapter(this,mylist,R.layout.updates,
新字符串[]{“事件”,“通知”},
新int[]{R.id.event_title,R.id.notice});
最终ListView lv=getListView();
lv.setTextFilterEnabled(真);
/*lv.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、int位置、长id){
@抑制警告(“未选中”)
HashMap o=(HashMap)lv.getItemAtPosition(位置);
Toast.makeText(Updates.this,“ID'”+o.get(“ID”)+“”已被单击。”,Toast.LENGTH_LONG.show();
}
});
*/
progressDialog=progressDialog.show(Updates.this,“获取更新”,“请稍候…”);
新建GetDataTask().execute();
}
私有布尔isOnline(){
ConnectivityManager cm=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_服务);
NetworkInfo ni=cm.getActiveNetworkInfo();
如果(ni!=null&&ni.isConnected())
返回true;
返回false;
}
私有类GetDataTask扩展了AsyncTask{
@凌驾
受保护的整数doInBackground(Void…params){
//模拟一些延迟
试一试{
《睡眠》(2000年);
}捕捉(中断异常e1){
e1.printStackTrace();
}
if(isOnline()){
mylist.clear();
字符串xml=XMLfunctions.getXML();
Document doc=XMLfunctions.XMLfromString(xml);
int numResults=XMLfunctions.numResults(doc);
如果((numResults删除
Toast.makeText(Updates.this, "No connection..", Toast.LENGTH_LONG).show();
现在,在空的else中,使AsyncTask返回另一个值(如2)
如果将return1;
移动到If(isOnline()
)中,则可以去掉else,只需编写return2;
,但这只是可读性问题
然后在onPostExecute()
中,检查值是否为2,然后制作土司
@Override
protected void onPostExecute(Integer result) {
if (result == 1){
setListAdapter(adapter);
progressDialog.dismiss();
super.onPostExecute(result);
}
else
Toast.makeText(Updates.this, "No connection..", Toast.LENGTH_LONG).show();
}
发布完整日志目录..添加完整日志目录。
else{
return 2;
}
@Override
protected void onPostExecute(Integer result) {
if (result == 1){
setListAdapter(adapter);
progressDialog.dismiss();
super.onPostExecute(result);
}
else
Toast.makeText(Updates.this, "No connection..", Toast.LENGTH_LONG).show();
}