当我按下注销按钮时,Android后退按钮进入主要活动

时间:2014-04-23 23:12:02

标签: android

*我创建了一个主要的活动和登录活动。

*我的应用会在点击退出按钮后将用户重定向到登录活动,但问题是,当我点击后面时,它仍会转到我不希望我的应用程序执行的主要活动。

*根据我的说法,用后退按钮监听器写一些条件会有所帮助。 有没有其他解决方案来阻止这种情况?

3 个答案:

答案 0 :(得分:4)

当您启动登录活动时,您可以使用Activity标志清除堆栈中的所有其他Intent.FLAG_ACTIVITY_CLEAR_TASK

FLAG_ACTIVITY_CLEAR_TASK标志将导致与activity to be cleared before the activity is started关联的任何现有任务。即,活动成为新的根,任何旧活动都已完成。此标志只能与FLAG_ACTIVITY_NEW_TASK

一起使用

示例:

Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);

注意:关闭LoginActivity使用后退,如果您从“活动历史记录”中启动' LoginActivity将启动(而不是MainActivity)

答案 1 :(得分:1)

当您注销时,请确保您的主要活动与您的登录活动不重叠

<强>解决方案:

Intent intent = new Intent(this,LoginActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        finish();
        startActivity(intent);

<强> FLAG_ACTIVITY_CLEAR_TOP:      如果已设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是将关闭其上的所有其他活动,并将此Intent传递给(现在开启) top)旧活动作为新的意图。

答案 2 :(得分:1)

要使后退按钮在LoginActivity中始终退出应用程序:

@Override
public void onBackPressed() {
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    super.onBackPressed();
}

重定向时从任务堆栈中删除MainActivity:

    Intent intent = new Intent(MainActivity.this,
            LoginActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(intent);