我一直在开发一个应用程序,当它在内部类中时,我已经设法让 AsyncTask
正常工作。
现在,我正在重构代码,以便 AsyncTask
位于它自己的单独类中,但我想知道,一旦任务成功完成,我该如何终止 ProgressDialog
并启动一个新的 Activity?我已经尝试在 onPostExecute(..)
方法中启动一个新的 Activity,但我知道这行不通。
在 AsyncTask 的构造函数中将我的 UI 线程 Activity 作为参数传递似乎不起作用:
//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
,也许我遗漏了一些东西,但这对我不起作用。 最佳答案
而不是传递 2 个参数只传递一个这样的:
public class Test101 extends Activity {
private Button btnLogin;
private LoginTask mLoginTask;
mLoginTask=new LoginTask(this);
mLoginTask.execute();
//Instead of sending null put the 1st parameter of the AsyncTask as Void
异步任务代码:
Activity mParentActivity;
public LoginTask(Activity act){
this = act;
}
onPostExecute(..){
((Test101)mParentActivity).callSomeMethod();
}
关于外部类中的Android AsyncTask,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2379233/