【发布时间】:2014-05-11 14:25:24
【问题描述】:
我知道 finish() 方法用于在开始新活动时完成当前活动。但可能 finish() 方法在我的 AsyncTask 覆盖方法中不起作用。 好的,我当前的活动是 LoginActivity,我在其中实现了 AsyncTask,并且在我的 AsyncTask 覆盖方法之一中,我正在启动 LoggedInActivity。 LoggedInActivity 中有很多片段。我认为这不会造成任何问题。当我按下 BACK 按钮时,我得到 LoginActivity。我不想要那个。请看我的代码:
public class LoginActivity extends Activity implements OnClickListener {
private void startLoggedInActivity()
{
Intent i = new Intent(this, LoggedInActivity.class);
startActivity(i);
finish();
}
private class FetchProfileTask extends AsyncTask<String, Integer, JSONObject>
{
protected JSONObject doInBackground(String... strings) {
bla....bla....
}
protected void onPreExecute() {
bla....bla....
}
protected void onPostExecute(JSONObject jsonObject) {
try {
startLoggedInActivity();
} catch (Exception e) {
Log.w("Exception", "FetchProfileTask - onPostExecute()");
} finally {
}
}
}
}
如果有人帮助我,我会很高兴.....
【问题讨论】:
-
为什么不尝试在启动 loggenInActivity 后在 onPostExecute() 中完成活动
-
@dcharms 如果我使用
android:noHistory="true",这将适用于从 LoginActivity 开始的所有活动。我不想要那个。我想完成一些特定活动的 LoginActivity。 -
@MahmoudElmorabea 请看一下
startLoggedInActivity()方法。我使用finish()完成当前活动。但不知道为什么它不起作用。 -
检查你的方法签名,onPostExecute() 返回 void 并且不能返回 JSONObject
-
@MahmoudElmorabea 谢谢。你注意到了。在我的应用代码中,它是 void。它以某种方式发生在stackoverflow编辑器中。我编辑了。
标签: java android android-intent android-asynctask android-activity