我在应用程序开始时有一个登录 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/