gpt4 book ai didi

android - 转到 API <= 10 中的新 Activity 时如何清除后台堆栈

转载 作者:行者123 更新时间:2023-11-30 03:46:49 24 4
gpt4 key购买 nike

我有一个启动流程如下的应用程序:

StartupActivity -> LoginDialog -> LoginActivity -> HomeActivity

当我从 LoginActivity 转到 HomeActivity 时,我调用:

Intent intent = new Intent( this, HomeActivity.class );
if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB )
{
intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK );
}
else
{
intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP );
}
startActivity( intent );
finish();

On >= API 11 , 这使得 HomeActivity是一项全新的任务,StartupActivity不再位于后栈中。

但是,关于 API <= 10 , FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP清除 LoginActivity从后面的堆栈,但是 StartupActivity还在那里。如果用户从 HomeActivity 单击返回, 它将它们带回 StartupActivity .

如何从返回堆栈中清除 StartupActivity?

  • 根据我的研究,最好的方法似乎是 startActivityForResult() 但我可以从对话框中这样做吗?谁会得到结果?

总结:

  • 来自 StartupActivity , 我展示了 LoginDialog .
  • 来自 LoginDialog , 我去 LoginActivity不清除返回堆栈。
    • 这是因为我希望用户能够从 LoginActivity 返回到 StartupActivity .
  • 来自 LoginActivity , 我去 HomeActivity并清除后台堆栈
  • 按回键仍会返回到 StartupActivitydevices <= API 10

最佳答案

我想出了怎么做...

当 LoginDialog 启动 LoginActivity 时,我可以使用 startActivityForResult() 使 LoginActivity 将结果传回 StartupActivity。如果结果是成功登录,我可以完成 StartupActivity。

LoginDialog 可以从多个地方触发,但如果它是从 StartupActivity 触发的,我可以设置一个标志以调用 startActivityForResult()。

我遇到的问题是如何使用对话框中的 startActivityForResult 将结果返回到启动该对话框的 Activity 中......我想通了。

关于android - 转到 API <= 10 中的新 Activity 时如何清除后台堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14864917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com