在我的申请表中,我有3项活动:
1. Login
2. AsyncTask
(不同类)
3. Welcome
收到Login Activity
中的所有信息后,它会移至AsyncTask Activity
。 AsyncTask
完成后,它会移至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
..
提前致谢...
答案 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())
中完成登录活动