【问题标题】:starting ActivityB from ActivityA without returning to ActivityA从Activity启动Activity而不返回Activity
【发布时间】:2015-09-29 20:05:13
【问题描述】:

我正在尝试启动 activityA 并在 ActivityA 的恢复方法中使用 NEW_TASK 和 BRING_TO_FRONT 启动 ActivityB。但它转到 ActivityB 并立即返回到 ActivityA

另一方面,如果我单击 ActivityA 中的按钮并启动 Intent,它将按预期转到 ActivityB!

有什么问题?是因为我在 resume 方法中调用startActivity(activityB) 吗?什么是解决方法,因为我想在运行两个 Activity 的情况下启动我的应用程序,并在完成 ActivityB 后返回 ActivityA?

还有一件事,创建我正在使用的意图

  getPackageManager().getLaunchActivityEvent(packageName)

【问题讨论】:

  • 请显示更多代码

标签: android


【解决方案1】:

尝试做这样的事情:

public void onResume() {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                //Your activity startup code here
            }
        });
}

这样做的目的是将您的 Activity 启动代码放入 UIThread 消息队列中,使其在 ActivityA 的恢复代码完成后触发。

【讨论】:

  • 好的,它需要延迟发布还是什么?我现在正在尝试。
  • 简单的帖子应该可以做到,如果没有,请尝试延迟 100 毫秒。
【解决方案2】:

如果您想在 B 完成后返回活动 A,请改用(与您的方法不同)

StartActivityForResult(NextActivityIntent);

& 在返回活动 A 时按以下方法做任何你想做的事:

onActivityResult()

【讨论】:

    【解决方案3】:

    Kelevandos 的建议会奏效,即使没有延迟。

    只是为了给一些不那么“hacky”的选择......

    使用StartActivityForResult 开始活动 B。这样做时,将调用 onActivityResult。您首先检查它是否从 B 返回(只需检查请求代码。必须与您提交的相同)。即使 B 是唯一从 A 调用的活动 - 这只是一个好习惯。

    然后在活动 A 上调用finish()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-28
      • 2011-05-16
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      相关资源
      最近更新 更多