2017-09-08 63 views
0

我有活动A,B和C. A开始B和C,一个接一个。问题是B被打开,然后C开始并且覆盖B.我希望A等到B完成并返回,但是这没有发生。 C在启动B后立即启动,因此用户从不会看到B.startActivityForResult()不会暂停以前的活动

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

这里是活性代码:

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

告诉你如何启动B和C.你必须开始下,在'onActivityResult() ' –

回答

0

你必须使用链条的onActivityResult()活动。

A调用B,然后在onActivityResult()使用resultCode为参数,验证B被返回。验证完成后,你是从B中的回调,然后调用C.因此,它更像是一个开始B,然后B开始C.

0

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

  1. startActivityForResult(intent_A_to_B, 101);//here 101 is any request code
  2. 无论你叫finish()Activity B,叫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); } }