繁体   English   中英

当我转到其他活动时,如何关闭进度对话框?

[英]How to dismiss progress dialog when i'm moving to another activity?

我正在OnPostExecute启动一个新的Activity并调用pDialog.dismiss() ,但是当我从新的Activity返回到先前的Activity时,进度对话框仍在运行。 我要转移到另一项活动时如何永久将其消除?

这是我的AsyncTask类。

public class FindRideTask extends AsyncTask<Void, Void, Void>
{
     private ProgressDialog pDialog;

    @Override
    protected void onPostExecute(Void result) {

        if(pDialog!=null && pDialog.isShowing())
        {
            pDialog.dismiss();
        }
        Intent intent = new Intent(getApplicationContext(), FindRideBoard.class);
        Bundle bundle = new Bundle();
        bundle.putParcelableArrayList("Results", ridesList);
        intent.putExtras(bundle);
        startActivity(intent);

    }


    @Override
    protected void onPreExecute() {

        pDialog = new ProgressDialog(FindRide.this);
        pDialog.show(FindRide.this, "מתחבר לשרת", "אנא המתן");
    }


    @Override
    protected Void doInBackground(Void... params) {
        s_ParseLogic = ParseLogic.getInstance();

        try
        {
            ArrayList<ParseObject> ridesFromQuery = (ArrayList<ParseObject>)s_ParseLogic.FindRides(sourceList.getText().toString(), destinationList.getText().toString(), time_picker.getText().toString(), m_date.getText().toString());
            ridesList = new ArrayList<Ride>();

            for(int i = 0 ; i < ridesFromQuery.size() ; i++)
            {
                ParseObject obj = ridesFromQuery.get(i);
                ridesList.add(new Ride((String)obj.get("Source"), (String)obj.get("Destination"), (String)obj.get("Day"),(String) obj.get("Time"), (String)obj.get("IsPermanent"), (String)obj.get("Driver"), (String)obj.get("Driver Phone"))) ;
            }
        }
        catch(ParseException e)
        {
        }

        return null;
    }

}

在这里, getApplicationContext()是您的ApplicationContext 所以改变

  pDialog = new ProgressDialog(YourActivityName.this);

并在onPostExecute()方法中

  @Override
  protected void onPostExecute(Void result) {

   if(pDialog!=null && pDialog.isShowing()){

     pDialog.dismiss();
    }

    Intent intent = new Intent(getApplicationContext(), FindRideBoard.class);
    Bundle bundle = new Bundle();
    bundle.putParcelableArrayList("Results", ridesList);
    intent.putExtras(bundle);
    startActivity(intent);

}

UPDATE

Activity onDestroy()方法中销毁您的ProgressDialog

 @Override
 protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
     if(pDialog!=null && pDialog.isShowing()){

     pDialog.dismiss();
    }
 }

您可以像@ X'Factor所说的那样进行操作,但是关闭活动的onStop()方法中的对话框,当该活动不再可见时将调用该对话框。

@Override
 protected void onStop() {
    super.onStop();
     if(pDialog!=null && pDialog.isShowing()){

     pDialog.dismiss();
    }
 }

还要检查您是否在Activity的onResume()中启动AsyncTask,这可能会导致对话框首先出现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM