相关疑难解决方法(0)

清除整个历史记录堆栈并在Android上启动新活动

是否可以在堆栈上启动活动,清除之前的整个历史记录?

情况

我有一个活动堆栈,可以是A-> B-> C或B-> C(屏幕A选择用户令牌,但许多用户只有一个令牌).

在屏幕C中,用户可以采取使屏幕B无效的动作,因此应用程序想要将它们带到屏幕A,而不管它是否已经在堆栈中.屏幕A应该是我的应用程序中堆栈上唯一的项目.

笔记

还有许多其他类似的问题,但我没有发现任何可以回答这个问题的问题.我试过调用getParent().finish()- 这总是导致空指针异常.FLAG_ACTIVITY_CLEAR_TOP仅在活动已在堆栈上时才有效.

android android-activity back-stack

313
推荐指数
10
解决办法
19万
查看次数

如何清除Android Stack的活动?

我在Android中有一个包含多个活动的应用程序,我希望用户能够通过按菜单按钮注销.我遇到的问题是

A)的Android不会让你终止应用程序和
B),即使我的用户发送给LoginActivity他们又可以随时按下背部和马上回以前的活动,他们是in.

我已经尝试使用以下两个标志启动Activity:

Intent intent  = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);        
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

我也亲自尝试过每一个.

我也打过电话finish()startActivity(intent),我在另一个StackOverflow的问题读取.

stack android android-activity back-stack

53
推荐指数
5
解决办法
6万
查看次数

如何关闭所有活动并退出应用程序

我的应用程序旨在仅允许登录用户访问活动.如果用户注销,则共享首选项布尔值isLogged将设置为false,并且用户不应访问除LoginActivity之外的其他活动.

但是,我可以通过按后退按钮访问以前打开的所有活动.

我会finish();在打开每个活动时使用,但我希望用户在登录时仍然使用后退按钮.

我尝试过其他类似问题的解决方案

Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

并且在onCreate()我的LoginActivity的我已经加入

if (getIntent().getBooleanExtra("EXIT", false)) {
         finish();
    }
Run Code Online (Sandbox Code Playgroud)

当我按下注销选项时,将打开上一个活动.

有什么建议请帮帮我?

android android-intent

8
推荐指数
1
解决办法
9656
查看次数