【问题标题】:How to finish Activity from AsyncTask Android如何从 AsyncTask Android 完成 Activity
【发布时间】:2012-08-29 04:17:29
【问题描述】:

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

1. Login

2. AsyncTask(不同类)

3. Welcome

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

我正在尝试在AsyncTaskonPostExecite() 中使用以下代码:

Login.this.finish();

但我收到以下错误:No enclosing instance of the type of Login is accessible in scope..

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

在此先感谢...

【问题讨论】:

  • 更改活动顺序 - WelComeActivity + 登录

标签: android android-activity android-asynctask


【解决方案1】:

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

登录.this.finish();

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

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);

【讨论】:

  • 我在AsyncTaskActivity asynTask = new AsyncTask(LoginActivity.this); 中遇到错误
    但它适用于AsyncTaskActivity(this).execute() 的某些版本。
  • 哦,对不起,这是 AsyncTaskActivity asynTask = new AsyncTaskActivity(LoginActivity.this);
【解决方案2】:

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

步骤:

1) 登录活动

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

3) 调用新的Activity

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多