3

アクティビティBを開始するアクティビティAがあります。

activityA.startActivityForResult(new Intent(activityA, B.class), REQUESTCODE_B);

アクティビティBのボタンクリックで、AIeからアクティビティCを開始するメソッドが実行されます。

activityA.startActivityForResult(new Intent(activityA, C.class), REQUESTCODE_C);

アクティビティCのボタンクリックで、finish()を呼び出すことによって閉じられますが、Bはアクティブのままです。

ここで、activityAのonActivityResult()メソッドが呼び出されることを期待しますが、これは、activityBが終了した後にのみ呼び出されます。これは仕様によるものだと想像できますが、activityCが終了したことをactivityAに直接通知する方法はありますか?そして、アクティビティBまたはCがAについて明示的に知る必要がない場合はどうでしょうか。

4

1 に答える 1

1

これは非常に悪い習慣です。ActivityCを起動すると、ActivityAがAndroidによって破壊されていないことを確認できません。Androidは、バックグラウンドアクティビティをいつでも破棄できます。ActivityC.finish()を呼び出すとき、ActivityAはおそらく存在しません。次に、ActivityB.finish()を呼び出すと、AndroidはアクティビティスタックからActivityAを作成し、終了したアクティビティに対してonActivityResult()メソッドを呼び出します(順序はわかりません)。ActivityCからActivityBに結果を返すことができなかった理由を教えてください。

于 2012-09-18T17:57:03.087 に答える