试图取消进度对话框中的AsyncTask在android系统时的空指针异常 [英] Null Pointer exception when trying to cancel Progress Dialog in AsyncTask in android

查看:106
本文介绍了试图取消进度对话框中的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆