startActivityForResultの使い方を詳しく解説
startActivityForResultは、他のアクティビティを開始し、開始されたアクティビティが終了した後に結果を取得する場合に使用されます。使い方は次のとおりです。
- IntentオブジェクトとリクエストコードrequestCodeをstartActivityForResultメソッドに渡して、Activityを開始する場所に呼び出します。Intentオブジェクトは開始するActivityを特定するために使用され、requestCodeは開始リクエストを識別するために使用されます。
- 起動元のActivityの戻り値を設定する際にはsetResultメソッドを呼び出し、引数に結果コードresultCodeと結果データを格納したIntentを渡します。resultCodeは戻り値の識別に使われ、Intentは結果データの受け渡しに使われます。
- 起動したActivityは破棄され、起動したActivityに戻り、起動時にActivityに渡されたonActivityResultメソッドが呼び出されます。このメソッドでは、戻り値のデータを受け取ります。onActivityResultメソッドでは、requestCodeとresultCodeを判定することで、特定の戻り値を処理することができます。
startActivityForResultメソッドを使用することで、異なるアクティビティ間の遷移やデータの授受が行えます。例えば、ログイン画面のアクティビティを起動して、ユーザーが入力後にログイン結果を受け取ったり、画像選択画面のアクティビティを起動して、ユーザーが画像を選択後に選択した画像のパスを受け取ったりなどが可能です。
startActivityForResultメソッドを呼び出してアクティビティを起動する際、起動対象アクティビティのandroid:launchModeがsingleInstanceまたはsingleTaskに設定されていると、呼び出し元アクティビティには、そのアクティビティから返却した結果を受け取ることができないことに注意する必要があります。