Java 致命异常:AsyncTask#1
我想使用AsynTask来解析XML数据。 因此,在活动中,我:Java 致命异常:AsyncTask#1,java,android,xml,Java,Android,Xml,我想使用AsynTask来解析XML数据。 因此,在活动中,我: static List<String> citations = null; static void setCitations(List<String> data) { citations = data; } /** Called when the activity is first created. */ @Override public void
static List<String> citations = null;
static void setCitations(List<String> data) {
citations = data;
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new data().execute();
我看不出问题出在哪里
谢谢:)您没有初始化
引文
字段。向数据
类添加构造函数,如下所示:
public data(){
citations = new ArrayList<String>();
}
class data extends AsyncTask<Void, Void, List<String>> {
private XMLReader saxReader;
private SimpleContentHandler simpleContentHandler;
//I chose and array list here as a concrete implmentation. But you could use any other
//class that also implements the List interface if you want to.
private List<String> citations = new ArrayList<String>();
@Override
protected void onPreExecute() {
Log.i("AsyncTask", "onPreExecute");
}
@Override
public void onPostExecute(List<String> citations) {
GuiguiActivity.setCitations(citations);
}
@Override
protected List<String> doInBackground(Void... params) {
citations.add("TEST 1");citations.add("TEST 2");
return citations;
}
}
公共数据(){
引文=新的ArrayList();
}
在异步任务中,您需要初始化引文字段,如下所示:
public data(){
citations = new ArrayList<String>();
}
class data extends AsyncTask<Void, Void, List<String>> {
private XMLReader saxReader;
private SimpleContentHandler simpleContentHandler;
//I chose and array list here as a concrete implmentation. But you could use any other
//class that also implements the List interface if you want to.
private List<String> citations = new ArrayList<String>();
@Override
protected void onPreExecute() {
Log.i("AsyncTask", "onPreExecute");
}
@Override
public void onPostExecute(List<String> citations) {
GuiguiActivity.setCitations(citations);
}
@Override
protected List<String> doInBackground(Void... params) {
citations.add("TEST 1");citations.add("TEST 2");
return citations;
}
}
类数据扩展异步任务{
私有XMLReader;
私有SimpleContentHandler SimpleContentHandler;
//我在这里选择和数组列表作为一个具体的实现。但您可以使用任何其他的
//类,如果需要,该类还实现列表接口。
私有列表引用=新ArrayList();
@凌驾
受保护的void onPreExecute(){
Log.i(“AsyncTask”、“onPreExecute”);
}
@凌驾
公共作废onPostExecute(列出引用){
GuiGui活动。设置引用(引用);
}
@凌驾
受保护列表doInBackground(无效…参数){
引文。添加(“测试1”);引文。添加(“测试2”);
返回引用;
}
}
还有两件事:
谢谢,我知道我的代码不是很清楚。现在我正在学习android开发,所以当我的第一个目标达到时,我会编写另一个代码清理器,但是对于这两点,我会注意代码的可读性。现在还有另一个问题。在doInBackground中,我获取XML数据。所以我必须将这些数据发送到视图。开始时,我有
setListAdapter(新的ArrayAdapter(这个,R.layout.list_项,MyArrayOfCitations))
和MyArrayOfCitations是这样的:String[]=new String[]{“A”,“B”}
现在MyArrayOfCitations必须替换为一个列表,但是如果数据检索XML在显示UI之后启动,该怎么办?