0

我正在制作一个应用程序,用户可以通过单击注销按钮注销。在注销用户之前,用户位于活动 A 中,然后他单击导航抽屉中的 ogout 按钮,这会将他带到活动 B(登录屏幕活动)。现在在这里,如果我单击后退按钮,即使我正在通过以下代码清除活动堆栈,活动 A 也会重新出现,

Intent intent = new Intent(curr_context, Activity_B.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
finish();

同样在活动 B(登录活动)中,我有以下代码,

public void onBackPressed() {
        if (backPressedToExitOnce) {
            super.onBackPressed();
        } else {
            this.backPressedToExitOnce = true;
            Toast.makeText(curr_context, "Press again to exit", Toast.LENGTH_LONG).show();
            new Handler().postDelayed(new Runnable() {

                @Override
                public void run() {
                    backPressedToExitOnce = false;
                }
            }, 2000);
        }
    }

我真的不知道我错在哪里。任何帮助,将不胜感激。提前致谢 !!

4

4 回答 4

1

只需使用

finish();

我认为这可以解决我遇到同样问题并告诉我它是否有效

于 2015-08-08T22:00:15.023 回答
1

当您从 Activity B 启动 Activity A 时,您是否在 StartActivity 之后调用了“finish()”?

ActivityB 中的示例:

Intent intentActivityA= new Intent(getApplicationContext(),ActivityA.class);    
startActivity(intentActivityA);
finish();

这将在启动 Activity A 后立即终止 ActivityB,当您使用 ActivityA 的后退按钮时,它应该自动终止应用程序,因为 ActivityB 已经完成。

于 2015-08-08T22:01:56.763 回答
1

Activty_Acall finish();after launchActivity_B
您在 Intent 中设置的标志会为 B 活动创建一个新任务,但不要为您关闭 A。

于 2015-08-08T22:02:51.353 回答
1

您可以在活动 A 中添加此内容:

// 2.0 and above
@Override
public void onBackPressed() {
    moveTaskToBack(true);
}

// Before 2.0
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        moveTaskToBack(true);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

这样,当您单击后退按钮时,它将带您到启动器而不是活动 B

于 2015-08-08T22:19:53.013 回答