java - 清除 Activity Intent 的后退导航堆栈

标签 java android

我在应用程序开始时有一个登录 View 。在此 View 中登录时手动完成(即在代码中调用 finish() )。这样用户在想要退出应用程序时就不必按登录页面后的后退按钮。

现在我想在应用程序中添加一个注销按钮。这将调用登录 View (目的是删除任何以前存储的登录凭据 - 即模拟注销)。

我需要做的是清除此 Intent 的向后导航堆栈,否则用户仍然能够按回键并查看最初导航的应用程序。

现在,Intent.FLAG_ACTIVITY_CLEAR_TOP 不起作用,我猜是因为我 finish() 登录 Activity 意味着该 Activity 不在返回堆栈中。我还使用 Intent.FLAG_ACTIVITY_NEW_TASK ,它似乎也不起作用。用户仍然可以按后退按钮并向后导航他们应登录才能访问的 Activity 。

所以我需要做的是创建 Login Activity 的实例,并将其作为我的应用程序的新 root Activity 。

我该怎么做?

谢谢

最佳答案

尝试

Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP

这是来自一个对我来说效果很好的应用程序..

homeButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {

            Intent intent = new Intent( _context, MainMenuActivity.class );
            intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
            _context.startActivity( intent );

            finish();       

            overridePendingTransition(R.anim.slide_right,R.anim.slide_right);
    }
});

关于java - 清除 Activity Intent 的后退导航堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9055310/

相关文章:

java - 从 Blender 2.8 导出到 LibGDX

java - 卡夫卡Java客户端: ClassLoader doesn't find SASL/Scram Login Class

java - 无法通过 fragment 内的上下文菜单从自定义 ListView 中删除数据库行 - Android

android - 是否可以仅使用 C 在 android 上编写应用程序?

javascript - 从 get 方法中删除 %20 值

android - 在蜂窝设备上开发应用程序

java - 在 android studio (1.1.0) 中,如何添加对来自其他来源的 java 文件的依赖?

java - 带有 "where"子句的示例 OSLC 代码

java - 删除未保存的对象不会引发异常

Java - 圈和叉/井字棋游戏获胜算法不起作用