3

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

1. Login

2. AsyncTask(不同等级)

3. Welcome

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

我正在尝试在onPostExecite()of中使用以下代码AsyncTask

Login.this.finish();

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

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

提前致谢...

4

2 回答 2

9

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

Login.this.finish();

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

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);
于 2012-08-29T04:34:14.667 回答
2

行 。在说明新活动后,您应该在 onPostExcecute 方法中调用 finish()。

脚步:

1) 登录活动

2)异步任务(传递应用程序上下文)

3) 调用新的Activity

4) 在 onPostExcecute(context.finish()) 中完成您的登录活动

于 2012-08-29T04:28:49.500 回答