2
나는 lauot-procce bar와 AsyncTask를 사용하여 xml에 대한 작업을 수행하고 사용자에게 표시하는 응용 프로그램을 작성했습니다.AsyncTask 및 처리 막대 작업
FATAL EXCEPTION: AsyncTask #2
03-17 11:25:29.559: E/AndroidRuntime(31114): java.lang.RuntimeException: An error while executing doInBackground()
03-17 11:25:29.559: E/AndroidRuntime(31114): at android.os.AsyncTask$3.done(AsyncTask.java:200)
03-17 11:25:29.559: E/AndroidRuntime(31114): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
03-17 11:25:29.559: E/AndroidRuntime(31114): at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
03-17 11:25:29.559: E/AndroidRuntime(31114): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
03-17 11:25:29.559: E/AndroidRuntime(31114): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
03-17 11:25:29.559: E/AndroidRuntime(31114): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
03-17 11:25:29.559: E/AndroidRuntime(31114): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
03-17 11:25:29.559: E/AndroidRuntime(31114): at java.lang.Thread.run(Thread.java:1019)
03-17 11:25:29.559: E/AndroidRuntime(31114): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
03-17 11:25:29.559: E/AndroidRuntime(31114): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
0 3-17 11:25:29.559: E/AndroidRuntime(31114): at java.util.ArrayList.get(ArrayList.java:311)
03-17 11:25:29.559: E/AndroidRuntime(31114): at com.example.News.NewsActivity$GetDataTask.doInBackground(NewsActivity.java:67)
03-17 11:25:29.559: E/AndroidRuntime(31114): at
내 코드는 다음과 같습니다 :
는public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.progdailog);
mContext = this;
new GetDataTask().execute();
}
protected void onPostExecute(Integer result) {
listAdapter = new CustomListAdapter(mContext, R.layout.list_item,
ListNews);
ListView lv = ((ListActivity) mContext).getListView();
lv.setAdapter(listAdapter); // on test
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if (position != 0) {
// When clicked, show a toast with the TextView text
String s = ReadXML.hadashotListItems.get(position - 1).link;
Intent intent = new Intent(NewsActivity.this,
WebActivity.class);
intent.putExtra("url", s);
startActivity(intent);
}
}
public void onScrollStateChanged(final AbsListView view,
final int scrollState) {
if (scrollState == 0)
listAdapter.notifyDataSetChanged();
}
});
//progDailog.dismiss();
super.onPostExecute(result);
}
}
라인 67은 나는
오류를 을 마무리하지만, 내 코드와 함께 몇 가지 문제가됩니다 다시 였는지를 후 였는지를 표시 줄을 dismess 할 코드 :
protected Integer doInBackground(Void... params) {
try {
ReadXML = new ReadXMLFile(mContext, getIntent().getExtras()
.getString("urlXml"));
ListNews.add("NEWS");
if (checkDate(ReadXML.hadashotListItems.get(0).pubDate,ReadXML.hadashotListItems.get(1).pubDate))
for (int i = 0; i < ReadXML.hadashotListItems.size(); i++) {
ListNews.add(ReadXML.hadashotListItems.get(i).title + "\n"
+ ReadXML.hadashotListItems.get(i).pubDate);
}
else
for (int i = ReadXML.hadashotListItems.size()-1; i >=0; i--) {
ListNews.add(ReadXML.hadashotListItems.get(i).title + "\n"
+ ReadXML.hadashotListItems.get(i).pubDate);
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (java.text.ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 1;
}
나는 생각합니다. g 잘못된보기. 코드를 변경하면 도움이 될 것입니다.
다음 코드 줄을 가리 키십시오. com.example.News.NewsActivity $ GetDataTask.doInBackground (NewsActivity.java:67) – Egor
GetDataTask()는 복사하지 못한 클래스입니다. 이것 좀 봐 http://stackoverflow.com/a/9407916/1012284 –
당신의'ReadXMLFile'는 빈리스트를 리턴했습니다. 당신이해야 할 일을하기 전에 당신은해야합니다. 'if (ReadXML.hadashotListItems == null || ReadXML.hadashotListItems.size() == 0) return;'(null 체크가 아닌 경우 null 체크를 건너 뛸 수있다. – zapl