试图取消进度对话框中的AsyncTask在android系统时的空指针异常 [英] Null Pointer exception when trying to cancel Progress Dialog in AsyncTask in android
本文介绍了试图取消进度对话框中的AsyncTask在android系统时的空指针异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我得到一个空指针异常而异步任务取消进度对话框..this是我的code..I'm从RSS Conecction获取数据7天Week..I的要取消对话框,停止任务,如果用户pressed后退按钮。
@覆盖
在preExecute保护无效(){
的ShowDialog(DIALOG_PROGRESS);
台历挂历= NULL;
开关(天){
案例SAT:
日历= DateUtil.getSaturdayDate();
打破;
案例SUN:
日历= DateUtil.getSundayDate();
打破;
案例MON:
日历= DateUtil.getMondayDate();
打破;
案例TUE:
日历= DateUtil.getTuesdayDate();
打破;
案例WED:
日历= DateUtil.getWednesdayDate();
打破;
案例THU:
日历= DateUtil.getThursdayDate();
打破;
案例五:
日历= DateUtil.getFridayDate();
打破;
默认:
打破;
} 如果(日历!= NULL){
generatedLink = WeeklyScheduleBean.generatePath(DateUtil.getDay(日历),
DateUtil.getMonth(日历),
DateUtil.getYear(日历));
}其他{
//取得今天的日程安排
日历CURRENT_DAY = DateUtil.getCurrentTime();
generatedLink = WeeklyScheduleBean.generatePath(DateUtil.getDay(CURRENT_DAY)
DateUtil.getMonth(CURRENT_DAY)
DateUtil.getYear(CURRENT_DAY));
}
} @覆盖
保护布尔doInBackground(虚空...... PARAMS){
feedParser =新WeeklyScheduleParser(generatedLink);
名单=新的ArrayList< WeeklyScheduleBean>();
尝试{
清单= feedParser.parse();
}赶上(例外五){
e.printStackTrace();
返回false;
} 如果(则为list.size()大于0)
返回true;
其他
返回false;
} @覆盖
保护无效onPostExecute(布尔结果){
如果(progressDialog.isShowing()){
如果(结果){
weeklyScheduleScreen.removeDialog(DIALOG_PROGRESS);
适配器=新WeeklyAdapter(CXT,R.layout.time_text_list,R.id.title_text,清单);
lv.setAdapter(适配器);
}
其他{
DialogUtil.CreateDialog(,无法检索提要,假的,WeeklyScheduleScreen.this);
weeklyScheduleScreen.removeDialog(DIALOG_PROGRESS);
}
}
}
}
解决方案
试图改变的ShowDialog(DIALOG_PROGRESS);
到 progressDialog.show() ;
I'm Getting a Null Pointer Exception while canceling the Progress Dialog in Async Task ..this is my code..I'm Getting Data from an RSS Conecction for 7 days of Week..I want to cancel the Dialog and stop the task if the user pressed Back Button.
@Override
protected void onPreExecute() {
showDialog(DIALOG_PROGRESS);
Calendar calendar = null;
switch (day) {
case SAT:
calendar = DateUtil.getSaturdayDate();
break;
case SUN:
calendar = DateUtil.getSundayDate();
break;
case MON:
calendar = DateUtil.getMondayDate();
break;
case TUE:
calendar = DateUtil.getTuesdayDate();
break;
case WED:
calendar = DateUtil.getWednesdayDate();
break;
case THU:
calendar = DateUtil.getThursdayDate();
break;
case FRI:
calendar = DateUtil.getFridayDate();
break;
default:
break;
}
if(calendar != null) {
generatedLink = WeeklyScheduleBean.generatePath( DateUtil.getDay(calendar),
DateUtil.getMonth(calendar),
DateUtil.getYear(calendar) );
} else {
// get the schedule of today
Calendar current_day = DateUtil.getCurrentTime();
generatedLink = WeeklyScheduleBean.generatePath( DateUtil.getDay(current_day),
DateUtil.getMonth(current_day),
DateUtil.getYear(current_day) );
}
}
@Override
protected Boolean doInBackground(Void... params) {
feedParser = new WeeklyScheduleParser(generatedLink);
list = new ArrayList<WeeklyScheduleBean>();
try {
list = feedParser.parse();
} catch (Exception e) {
e.printStackTrace();
return false;
}
if(list.size() > 0)
return true;
else
return false;
}
@Override
protected void onPostExecute(Boolean result) {
if(progressDialog.isShowing()){
if(result) {
weeklyScheduleScreen.removeDialog(DIALOG_PROGRESS);
adapter = new WeeklyAdapter(cxt, R.layout.time_text_list, R.id.title_text, list);
lv.setAdapter(adapter);
}
else {
DialogUtil.CreateDialog("", "Could not retreive the feeds",false,WeeklyScheduleScreen.this);
weeklyScheduleScreen.removeDialog(DIALOG_PROGRESS);
}
}
}
}
解决方案
try to change showDialog(DIALOG_PROGRESS);
to progressDialog.show();
这篇关于试图取消进度对话框中的AsyncTask在android系统时的空指针异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文