我试图在异常发生后关闭进度对话框,但我当前的情况不允许我这样做。
我有3个班级:
来自 MainActivity 我正在使用AsyncTask运行任务并显示进度对话框,而任务则在后台完成。
@Override
public void onCreate(Bundle savedInstanceState)
{
// my code ...
BackgroundTask bt = new BackgroundTask();
bt.execute();
}
private class BackgroundTask extends AsyncTask<Void, Void, Void>
{
private ProgressDialog PD;
@Override
protected void onPreExecute()
{
PD = new ProgressDialog(getActivity());
PD.setMessage("Performing background tasks...");
PD.setCancelable(false);
PD.show();
}
@Override
protected Void doInBackground(Void... arg0)
{
// call SecondClass's getMyPhotos method to perform some tasks
// ...
return null;
}
protected void onPostExecute(Void... arg0)
{
Log.i("MainActivity", "--called--");
}
}
我的 SecondClass 是带有一些方法的简单Java类
public class SecondClass
{
// ....
public void getMyPhotos()
{
// from here I call ThirdClass's internetRelatedStuff method
}
}
最后在 ThirdClass 我在AsyncTask中做一些与互联网相关的事情:
public class ThirdClass
{
// ....
public void internetRelatedStuff()
{
try
{
// again some other stuff...
// LoadImage asyncTask
LoadImage loadImg = new LoadImage();
loadImg.execute();
}
catch(Exception e)
{
if(e.getErrorCode() == 34)
{
// if I get an exception here, how am I suppose to close close Progress dialog
// of MainActivity
}
}
}
private class LoadImage extends AsyncTask<.......>
{
// .....
}
}
所以在我的ThirdClass的try / catch中,如果发生异常,我可以关闭从MainActivity显示的Progress对话框吗?
答案 0 :(得分:0)
是的,有多种方法可以做到这一点。您可以将ProgressDialog
中的MainActivity
对象传递到SecondClass
的{{1}}方法,然后传递给getMyPhotos()
构造函数,然后关闭对话框
答案 1 :(得分:0)
有几种方法可以做到这一点,让我指出两个....
您可以将对话框从活动传递到SecondClass,然后从SecondClass传递到第三类,并在那里使用它来关闭对话框...您将在第二和第三类中定义ProgressDialog,
< / LI>在Activity中创建一个静态变量ProgressDialog和一个静态函数closeDialogs() 你可以在哪里关闭对话框,你可以使用静态引用来调用它。来自三等, 我个人喜欢这个....