当前位置: 首页 > 知识库问答 >
问题:

清除活动后栈android[复制]

阎功
2023-03-14

我知道关于这个主题,已经有很多关于堆栈溢出的问题,但没有什么对我有用。我想实现的是,我想清除特定方法调用上堆栈后的所有活动。

假设我在我的应用程序中有一个入口点,即login()方法。现在我从五个不同的活动中调用此方法。登录后始终显示一个屏幕。现在我想实现的是,无论从哪里调用login()方法,如果登录成功,那么用户应该转到下一个活动(活动2),并且在双击该活动(活动2)时,用户应该退出应用程序。那就是我希望我的活动后堆栈在登录()方法成功时被清除。

这就是我在登录成功时所做的,但没有帮助。

Intent i = new Intent(context, DrawerActivity.class);
                                           i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
((Activity)context).finish();

如何做到这一点?

提前感谢:)

共有2个答案

郝修为
2023-03-14
Intent intent = new Intent(this, Example.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                | Intent.FLAG_ACTIVITY_CLEAR_TASK
                | Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);
易自珍
2023-03-14

如果用户成功登录,请使用以下标志打开您的第二个主要活动:

Intent intent = new Intent(this, ActivitySecond.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(intent);
            finish();
 类似资料:
  • 举个例子, 我有活动 A、B、C、D A呼叫B 然后,B呼叫C 之后,C呼叫D 在活动D中,我调用。它将返回活动C。 我的问题是,在调用<code>finish() 不要建议在每次都调用 因为应用可以按回上一个活动以继续。

  • 好吧,所以我有点困惑该怎么处理这个。因此,我有了主活动,从那里可以启动一个活动到DegreePlan活动,从那里可以启动另一个活动到EditDegreeplan。我已经将EditDegreeplan设置为在Android清单中没有历史记录。问题是在他们保存EditDegreeplan后,它会启动一个活动到Degreeplan。因此,如果用户按下后退键,他们必须按两次才能再次进入主活动。我想摆脱它,

  • 问题内容: 我已经阅读了有关使用此功能的几篇文章,但一定会丢失一些东西,因为它对我不起作用。我的活动A在清单中有launchmode =“ singleTop”。它以launchmode =“ singleInstance”启动活动B。活动B打开浏览器并接收并返回意图,这就是为什么它是singleInstance的原因。我试图覆盖“后退”按钮,以便将用户发送回活动A,然后可以按“上一步”离开活动,

  • 当我在我的个人资料活动中点击注销按钮时,我想把用户带到登录页面,在那里他需要使用新的凭证。 所以我用了这个代码: 在。 但问题是,当我点击登录活动上的设备返回按钮时,它会把我带到Profile活动。我期待的应用程序应该关闭时,我按下设备返回按钮上的登录活动。 我做错了什么? 我还在清单中为我的登录活动添加了 非常感谢。

  • 当显示主片段时,我试图清除后堆栈中的所有片段。在导航图中,我添加了这个动作 在登录片段中。我尝试了findNavController()。导航(LoginFragmentDirections.actionLoginFragmentToHomeFragment()) 和 我从这里的文件中了解到https://developer.android.com/guide/navigation/navigat

  • 我已经从连接到NavController的导航抽屉中导航到了DialogFragment。但当我导航到另一个目标时,我已经将弹出窗口设置为包含对话框片段,但它并没有清除堆栈。如何清除堆栈? AM从LogoutDialog调用此方法 我只使用片段和一个活动。 这是我导航图的一部分