startActivityForResult() 没有暂停前一个 Activity
startActivityForResult() is not pausing previous Activity
我有活动 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));
您必须使用 startActivityForResult
。您基本上必须执行以下三个步骤:
startActivityForResult(intent_A_to_B, 101);//here 101 is any request code
- 无论你在
Activity B
中调用 finish()
,调用 setResult(RESULT_OK)
在 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);
}
}
您必须使用 onActivityResult()
链接活动。
A 调用 B,然后在 onActivityResult()
中使用 resultCode 参数验证 B 是否返回。一旦确认你在 B 的回调中,然后你调用 C。所以它更像是 A 启动 B,然后 B 启动 C。
我有活动 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));
您必须使用 startActivityForResult
。您基本上必须执行以下三个步骤:
startActivityForResult(intent_A_to_B, 101);//here 101 is any request code
- 无论你在
Activity B
中调用finish()
,调用setResult(RESULT_OK)
在
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); } }
您必须使用 onActivityResult()
链接活动。
A 调用 B,然后在 onActivityResult()
中使用 resultCode 参数验证 B 是否返回。一旦确认你在 B 的回调中,然后你调用 C。所以它更像是 A 启动 B,然后 B 启动 C。