如何在Android中显示进度对话框甚至触摸屏幕

时间:2015-02-19 05:16:17

标签: android progressdialog

我正在使用进度对话框来检索Flickr照片,我的要求是1)即使我触摸屏幕也显示进度对话框 2)如果我单击后退按钮,asyn任务应该取消并返回上一页

第二个要求在这里我试过,它即将到来,但我没有得到第一个要求。你能不能帮我解决这个问题

这是我的onPreExecute代码

 DownloadTask asyncClassObject;
       private class DownloadTask extends AsyncTask<String, Integer, String>{


          protected void onPreExecute() {
                        super.onPreExecute();
                     **asyncClassObject = new DownloadTask();**
                        // Showing progress dialog      
                        pDialog =  ProgressDialog.show(Flickeralbumlist.this,"Flickr Album","please wait...",true,true,new DialogInterface.OnCancelListener() {

                            @Override
                            public void onCancel(DialogInterface dialog) {


                                DownloadTask.this.cancel(true);
                                finish();
                            }
                        }); 
                        pDialog.setCanceledOnTouchOutside(false);
                        pDialog.setCancelable(false);
                        **asyncClassObject.execute();**
            }
    }

          @Override
                public void onBackPressed() {
                                 // cancel AsyncTask
                            if (asyncClassObject != null)
                                asyncClassObject.cancel(true);
                             // dismiss ProgressDialog
                            if(pDialog !=null)
                               if(pDialog.isShowing())
                                 pDialog.dismiss();

                             super.onBackPressed();
                }

这里我使用了这行“pDialog.setCanceledOnTouchOutside(false);”即使我没有得到正确的输出,你能不能帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

  

1)即使我触摸屏幕也会显示进度对话框

创建setCancelable后添加ProgressDialog

pDialog.setCanceledOnTouchOutside(false);
pDialog.setCancelable(false);
  

2)如果我点击后退按钮,asyn任务应取消并返回   上一页

使用真值调用AsyncTask.cancel

@Override
public void onBackPressed()
{
    // cancel AsyncTask
    if (asyncClassObject != null)
        asyncClassObject.cancel(true);

    // dismiss ProgressDialog
    if(pDialog !=null)
       if(pDialog.isShowin())
         pDialog.dismiss()
    super.onBackPressed();
}

答案 1 :(得分:1)

使用以下代码获取Click事件.....

     View view = (View)findViewById(R.id.mainLayout);

     view.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View arg0, MotionEvent arg1) {
            System.out.println("Clicked!!!"); /// Write your Code for Progress Here....
            return true;
        }
    });