【问题标题】:startActivityForResult() is not pausing previous ActivitystartActivityForResult() 没有暂停以前的活动
【发布时间】:2017-09-08 07:44:03
【问题描述】:

我有活动 A、B 和 C。A 一个接一个地开始 B 和 C。问题是 B 被打开,然后 C 开始并覆盖 B。我希望 A 等到 B 完成并返回,但这并没有发生。 C 在启动 B 后立即启动,因此用户永远看不到 B。

我正在使用其他帖子中建议的 startActivityForResult(),但这没有帮助。

这是 Activity A 中的代码:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
if (! pm.isIgnoringBatteryOptimizations(getApplicationContext().getPackageName())) {
    startActivityForResult(new Intent(android.provider.Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS), 1);
}

...

startActivity(new Intent(InitActivity.this, MyAwesomeActivity.class));

【问题讨论】:

  • 展示你如何启动B和C。你必须在onActivityResult()启动C

标签: android android-activity start-activity


【解决方案1】:

你必须使用startActivityForResult。你基本上要做到以下三个步骤:

  1. startActivityForResult(intent_A_to_B, 101);//here 101 is any request code
  2. 无论你在Activity B 内拨打finish(),请拨打setResult(RESULT_OK)
  3. Activity A 中,覆盖onActivityResult

    @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 101) {//this is the request code if (resultCode == RESULT_OK) { startActivity(intent_A_to_C); } }

【讨论】:

    【解决方案2】:

    您必须使用onActivityResult() 链接活动。

    A 调用 B,然后在 onActivityResult() 中使用 resultCode 参数来验证 B 是否正在返回。一旦确认你在 B 的回调中,然后你调用 C。所以它更像是 A 启动 B,然后 B 启动 C。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-08
      • 1970-01-01
      相关资源
      最近更新 更多