1

startActivityForResult で新しいアクティビティ B を開始するアクティビティ A があります。
アクティビティ B は で数回再開FLAG_ACTIVITY_CLEAR_TOPされるため、ユーザーが戻るをクリックすると、B は でデータを置き、setResult()アクティビティ A に戻ります。
ただし、データが欠落しています。onActivityResultin A は、デフォルトで null と resultCode を意図して呼び出されます。

実際、以前のアクティビティを破棄するため、これが正しい動作であることはわかっていますが、FLAG_ACTIVITY_CLEAR_TOPこれを達成するための回避策があるかどうか疑問に思います (B の再起動を回避するなどの明白なオプションは別として)。

4

1 に答える 1

3

アクティビティ B を再起動するときに、起動インテントにと の両方FLAG_ACTIVITY_CLEAR_TOPを追加します。FLAG_ACTIVITY_SINGLE_TOP

activityBIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

また、アクティビティ B を再起動すると が呼び出さonNewIntent(Intent)れますが、getIntent()古い (元の) インテントは引き続き配信されます。

getIntent() は元の Intent を返すことに注意してください。setIntent(Intent) を使用して、この新しい Intent に更新できます。

于 2015-07-13T15:51:02.327 に答える