如何从AsyncTask Android完成Activity

Abh*_*man 3 android android-asynctask android-activity

在我的应用程序中,我有3个活动:

1. Login

2. AsyncTask (不同类)

3. Welcome

收到所有信息后,Login Activity它移动到AsyncTask Activity.当在AsyncTask完成其移动到Welcome Activity.我想Login ActivityAsyncTask Activity完成工作后立即关闭..

我尝试使用下面的代码onPostExecite()AsyncTask:

Login.this.finish();

但我得到一个错误:No enclosing instance of the type of Login is accessible in scope..

请告诉我如何Login Activity在完成我的工作后关闭我的AsyncTask..

提前致谢...

jee*_*eet 9

由于AsyncTaskActivity位于与LoginActivity不同的文件中,因此您无法通过以下方式完成LoginActivity:

Login.this.finish();

相反,您应该将活动参考作为参数传递给AsyncTaskActivity类,就像您可以定义以下构造函数一样:

private class AsyncTaskActivity extends AsyncTask<String, Void, String> {

Activity mActivity;
    public AsyncTaskActivity(Activity activity)
    {
         super();
         this.mActivity=activity;
    }
}
Run Code Online (Sandbox Code Playgroud)

并且每当您想要完成活动呼叫

this.mActivity.finish();
Run Code Online (Sandbox Code Playgroud)

在LoginActivity中创建AsyncTaskActivity的对象

AsyncTaskActivity asynTask = new AsyncTaskActivity(LoginActivity.this);
Run Code Online (Sandbox Code Playgroud)