Java 从onPostExecute()方法启动带有标志intent.flag\u ACTIVITY\u NEW\u任务的意图不起作用

Java 从onPostExecute()方法启动带有标志intent.flag\u ACTIVITY\u NEW\u任务的意图不起作用,java,android,android-activity,Java,Android,Android Activity,当您转到新…>Android活动在Eclipse中,使用Android 4.2 SDK上的ADT工具 它包含一个电子邮件字段、密码字段和一个显示“登录或注册”的按钮。当您单击该按钮时,它会执行一个伪异步网络请求,调用一些方法来显示进度条,使用伪数据验证用户登录,如果一切都成功,则最后调用的是: @Override protected void onPostExecute(final Boolean success) { mAuthTask

当您转到新…>Android活动在Eclipse中,使用Android 4.2 SDK上的ADT工具

它包含一个电子邮件字段、密码字段和一个显示“登录或注册”的按钮。当您单击该按钮时,它会执行一个伪异步网络请求,调用一些方法来显示进度条,使用伪数据验证用户登录,如果一切都成功,则最后调用的是:

        @Override
        protected void onPostExecute(final Boolean success) {
            mAuthTask = null;
            showProgress(false);

            if (success) {
                //finish();
                Intent intent = new Intent(LoginActivity.this, MainActivity.class)
                    .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_TASK_ON_HOME);
                startActivity(intent);
            } else {
                mPasswordView
                        .setError(getString(R.string.error_incorrect_password));
                mPasswordView.requestFocus();
            }


}
我注释掉了finish(),而是想打开一个新的活动窗口,作为我的主应用程序窗口(已登录状态)。我昨天刚开始使用Android,我看到很多例子使用片段来代替活动。这有关系吗?无论如何,它工作正常,它打开了一个新的活动,但我仍然可以按“后退按钮”,它将带我进入登录屏幕。我非常确定我在活动下面设置的那些标志是清除历史堆栈所必需的,但它不起作用

如何修复上述代码以清除历史堆栈?换句话说,在我登录后,它会将我带到新活动,如果我按后退,它会将我带到主屏幕

更新 我已经附上了LoginActivity、MainActivity和AndroidManifest的代码


链接

使用
意图。将活动标记为清除顶部
。您正在使用的标志将创建一个新任务,但不会对堆栈的其余部分执行任何操作。此标志将清除所有其他
活动
。如果
活动
存在,它只会清除其余的
活动
,因此
main活动
将位于顶部

编辑

如果您想在从下一个
活动
按后退键后进入主屏幕,则只需在登录
活动
时调用
finish()
。这将从堆栈中删除登录页面。您还可以指定

android:noHistory="true"
清单中的
活动
登录屏幕标记中

尝试以下操作

@Override
    protected void onPostExecute(final Boolean success) {
        mAuthTask = null;
        showProgress(false);

        if (success) {
            Intent intent = new Intent(LoginActivity.this, MainActivity.class)
            startActivity(intent);
            finish();
        } else {
            mPasswordView
                    .setError(getString(R.string.error_incorrect_password));
            mPasswordView.requestFocus();
        }

}

谢谢,我现在就试试这个。但有一点相关:如果我想创建一个单一的活动应用程序,但有多个视图:loggedIn、loggedOut、settingsView、detailView、masterView……片段是正确的方法吗?不知道更多,我会说
片段
非常适合。你也可能想退房。Viewpager可能不是您想要的,但值得检查。我按照您的建议进行了操作,但仍然不起作用。和以前一样的问题。我将更新我的问题,并在Github Gist上发布MainActivity和LoginActivity的代码。我想我不明白你的意思。您登录,在新活动中,按back键并转到登录屏幕。再次返回主屏幕。这是您想要的并且没有发生的吗?如果您在
活动
标记中设置了该标志,那么它不会影响您的其他
活动
,但是调用finish()`也同样容易。它将运行
onDestroy()
方法,将其从堆栈中清除。好的,如果这是你想要的,请告诉我