【问题标题】:How to initialize an activity from another activity如何从另一个活动初始化一个活动
【发布时间】:2017-06-22 06:01:35
【问题描述】:

我有活动 A 和 B。活动 B 在应用程序关闭且活动 A 不在堆栈上时由服务启动。活动 A 具有 B 需要访问的成员。即使活动 B 是从服务启动的,我也希望主页按钮从活动 B 打开活动 A。有没有办法将活动 A 注入堆栈?

【问题讨论】:

  • Activity A has members that B requires access to 这是应用架构中的一个问题。不应该这样。

标签: android


【解决方案1】:

在您的Service 中启动ActivityA 而不是ActivityB 并将一些参数传递给ActivityA.. 并在ActivityAOnCraete 方法中启动ActivityB.. 现在您在堆栈。

【讨论】:

  • 我喜欢这个主意,让我试试
  • 但是如果活动是 A 已经打开了,我会在堆栈上添加另一个主要活动吗?
  • 我不知道您的应用程序流程是什么。但是,这取决于应用程序的结构,在什么情况下您会启动活动。顺便说一句,您可以制作一个活动单实例。或者您可以检查活动是否在前台。
  • 是的,我创建了一个活动实例,并从服务中将一个包传递给它,我仍然可以这样做。我检查活动 A 中的捆绑包是否不为空,如果不是,我打开活动 B。问题已解决。
【解决方案2】:

您可以使用 android:parentActivityName 属性(和相应的元素)在清单文件中声明每个活动的逻辑父级,以便主页按钮工作。

并将活动添加回堆栈 查看此link 了解更多详情。

【讨论】:

【解决方案3】:

这不是一个好的决定,最好使用 B Activity 中的成员,一旦 Activity B 启动并且即将离开,只需向 Activity A 发出意图即可。 您还可以检查 Activity A 是否已经在堆栈中。如果已经在栈中,它会自行弹出,如果没有找到,可以编程触发。

【讨论】:

  • SRB 对从活动 B 启动活动 A 有一个很好的想法,但是如果活动 A 已经在堆栈上怎么办?
  • 有一个检查堆栈的例程。否则,您可以在 Activity A 的生命周期中使用标志!
猜你喜欢
  • 2013-04-10
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多