我有活动A,B和C. A一个接一个地开始B和C.问题是B打开了,然后C启动并覆盖B.我希望A等到B完成并返回,但这没有发生。 C在启动B后立即启动,因此用户永远不会看到B.
我正在使用其他帖子中建议的startActivityForResult(),但这没有帮助。
以下是活动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));
答案 0 :(得分:0)
您必须使用startActivityForResult
。您必须基本上执行以下三个步骤:
startActivityForResult(intent_A_to_B, 101);//here 101 is any request code
finish()
内拨打Activity B
,请致电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);
}
}
答案 1 :(得分:0)
您必须使用onActivityResult()
链接活动。
A调用B,然后在onActivityResult()
中使用resultCode参数来验证B是否正在返回。一旦确认你在B的回调中,那么你打电话给C.所以它更像A开始B,然后B开始C。