Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 致命异常:AsyncTask#1_Java_Android_Xml - Fatal编程技术网

Java 致命异常:AsyncTask#1

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

我想使用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 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”);
返回引用;
}   
}
还有两件事:

  • java中的标准约定是,类名应始终以大写字母开头。考虑将AsYcTebug类名更改为类似DATATASK的内容,它既符合约定,又更具体地涉及类的操作。
  • 你有很多变量都有相似的名字。你应该试着找出每一个变量的实际含义,给所有变量起一个更有意义的名字。这将有助于防止进一步的混乱

  • 谢谢,我知道我的代码不是很清楚。现在我正在学习android开发,所以当我的第一个目标达到时,我会编写另一个代码清理器,但是对于这两点,我会注意代码的可读性。现在还有另一个问题。在doInBackground中,我获取XML数据。所以我必须将这些数据发送到视图。开始时,我有
    setListAdapter(新的ArrayAdapter(这个,R.layout.list_项,MyArrayOfCitations))
    和MyArrayOfCitations是这样的:
    String[]=new String[]{“A”,“B”}
    现在MyArrayOfCitations必须替换为一个列表,但是如果数据检索XML在显示UI之后启动,该怎么办?