![](/img/trans.png)
[英]How to redirect to the another activity when progress dialog dismiss in android
[英]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()
是您的Application
的Context
。 所以改变
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.