2017-09-08 71 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); } }