【发布时间】:2011-01-23 16:01:36
【问题描述】:
我一直在开发一个应用程序,并且我设法让AsyncTask 在内部类中正常工作。
现在,我正在重构代码,以便 AsyncTask 位于它自己的一个单独的类中,但我想知道,一旦任务成功完成,我如何杀死 ProgressDialog 并启动一个新的 Activity?我已经尝试在 onPostExecute(..) 方法中启动一个新的 Activity,但我知道这行不通。
在 AsyncTask 的构造函数中将我的 UI 线程活动作为参数传递似乎不起作用:
//In UI Thread I had
public class Test101 extends Activity {
private Button btnLogin;
private LoginTask mLoginTask;
private Context context=this;
private Test101 mTest101;
mLoginTask=new LoginTask(context,mTest101);
mLoginTask.execute(null);
// In the AsyncTask I had
Activity mParentActivity;
public LoginTask(Context context,Activity act){
this.ctx=context;
this.mParentActivity=act;
}
onPostExecute(..){
mParentActivity.callSomeMethod();
}
...
}
我不断收到NullPointerException,也许我遗漏了一些东西,但这对我不起作用。
【问题讨论】:
-
取得了很大的进展,这是我到目前为止所取得的进展,在 onPostExecute(String result) 方法中我关闭了 progressDialog,现在我正在尝试将 AsyncTask 的结果传递回UI 线程中的活动。还没有弄清楚那部分:@Override protected void onPostExecute(String result) { pDialog.dismiss(); //将AsyncTask的结果传回UI线程中的Activity???? }
标签: android asynchronous android-asynctask