AsynTask를 사용하여 XML 데이터를 구문 분석하려고합니다.치명적인 예외 : AsyncTask # 1
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();
을 그리고 데이터 클래스에 난했습니다 : 그래서 활동에 난했습니다
대신 난 내 XML 파서를했습니다 citations.add의class data extends AsyncTask<Void, Void, List<String>> {
private XMLReader saxReader;
private SimpleContentHandler simpleContentHandler;
private List<String> citations;
@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;
}
}
하지만,이 경우에도에 citations.add 오류가 발생합니다.
10-24 15:28:46.647: E/AndroidRuntime(1160): FATAL EXCEPTION: AsyncTask #1
10-24 15:28:46.647: E/AndroidRuntime(1160): java.lang.RuntimeException: An error occured while executing doInBackground()
10-24 15:28:46.647: E/AndroidRuntime(1160): at android.os.AsyncTask$3.done(AsyncTask.java:278)
10-24 15:28:46.647: E/AndroidRuntime(1160): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
10-24 15:28:46.647: E/AndroidRuntime(1160): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
10-24 15:28:46.647: E/AndroidRuntime(1160): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
10-24 15:28:46.647: E/AndroidRuntime(1160): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
10-24 15:28:46.647: E/AndroidRuntime(1160): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
10-24 15:28:46.647: E/AndroidRuntime(1160): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
10-24 15:28:46.647: E/AndroidRuntime(1160): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10-24 15:28:46.647: E/AndroidRuntime(1160): at java.lang.Thread.run(Thread.java:856)
10-24 15:28:46.647: E/AndroidRuntime(1160): Caused by: java.lang.NullPointerException
10-24 15:28:46.647: E/AndroidRuntime(1160): at guigui.first.project.data.doInBackground(data.java:82)
10-24 15:28:46.647: E/AndroidRuntime(1160): at guigui.first.project.data.doInBackground(data.java:1)
10-24 15:28:46.647: E/AndroidRuntime(1160): at android.os.AsyncTask$2.call(AsyncTask.java:264)
10-24 15:28:46.647: E/AndroidRuntime(1160): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
어디에 문제가 있는지 알 수 없습니다.
감사합니다 :) 당신은 citations
필드를 초기화하지 않은
또 다른 문제가 있습니다. doInBackground에서 XML 데이터가 나타납니다. 그래서이 데이터를보기로 보내야합니다. '문자열 [] = 새로운 String [] { "A":' 그리고 MyArrayOfCitations는 그런 일이었다 시작되는 시점에 나는 'setListAdapter (새 ArrayAdapter와 (이, R.layout.list_item, MyArrayOfCitations))를 가지고 , "B"}; ' 이제 MyArrayOfCitations가 목록으로 바뀌어야합니다. UI를 표시 한 후에 데이터 검색 XML이 시작되면 어떻게해야합니까? –
guillaume