如何从AsyncTask Android完成Activity

时间:2012-08-29 04:17:30

标签: android android-activity android-asynctask

在我的申请表中,我有3项活动:

1. Login

2. AsyncTask(不同类)

3. Welcome

收到Login Activity中的所有信息后,它会移至AsyncTask ActivityAsyncTask完成后,它会移至Welcome Activity。我想在Login Activity完成工作后立即关闭AsyncTask Activity

我尝试在onPostExecite()的{​​{1}}中使用以下代码:

AsyncTask

但我收到的错误是:Login.this.finish(); ..

请告诉我如何在完成No enclosing instance of the type of Login is accessible in scope之后关闭Login Activity ..

提前致谢...

2 个答案:

答案 0 :(得分:9)

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

Login.this.finish();

相反,您应该在AsyncTaskActivity类中传递Activity Reference as参数,就像您可以定义以下构造函数一样:

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

Activity mActivity;
    public AsyncTaskActivity(Activity activity)
    {
         super();
         this.mActivity=activity;
    }
}

以及每当您想要完成活动呼叫时

this.mActivity.finish();

通过

在LoginActivity中创建AsyncTaskActivity的对象
AsyncTaskActivity asynTask = new AsyncTaskActivity(LoginActivity.this);

答案 1 :(得分:2)

好的。在陈述新活动之后,你应该在onPostExcecute方法中调用finish()。

<强>步骤进行:

1)登录活动

2)Asynac Task(传递应用程序上下文)

3)调用新活动

4)在onPostExcecute(context.finish())

中完成登录活动