AndroidでstartActivityForResultを管理する方法 質問する

AndroidでstartActivityForResultを管理する方法 質問する

私のアクティビティでは、メイン アクティビティから 2 番目のアクティビティを呼び出していますstartActivityForResult。2 番目のアクティビティには、このアクティビティを終了するメソッドがいくつかあります (結果なしで終了する場合もあります)。ただし、結果を返すのはそのうちの 1 つだけです。

たとえば、メインのアクティビティから 2 番目のアクティビティを呼び出します。このアクティビティでは、カメラがあるかどうかなど、携帯電話のいくつかの機能をチェックしています。カメラがない場合は、このアクティビティを閉じます。また、準備中MediaRecorderまたはMediaPlayer問題が発生した場合にも、このアクティビティを閉じます。

デバイスにカメラがあり、録画が完全に完了している場合、ビデオを録画した後、ユーザーが完了ボタンをクリックすると、結果 (録画されたビデオのアドレス) がメイン アクティビティに返されます。

メインアクティビティの結果を確認するにはどうすればよいですか?

ベストアンサー1

からFirstActivity、メソッドSecondActivityを使用してを呼び出しますstartActivityForResult()

例えば:

int LAUNCH_SECOND_ACTIVITY = 1
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, LAUNCH_SECOND_ACTIVITY);

SecondActivity、戻りたいデータを設定しますFirstActivity。戻りたくない場合は、何も設定しないでください。

たとえば、SecondActivityデータを送り返す場合は次のようにします。

Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();

データを返したくない場合は:

Intent returnIntent = new Intent();
setResult(Activity.RESULT_CANCELED, returnIntent);
finish();

次にFirstActivity、クラス内でメソッドの次のコードを記述しますonActivityResult()

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == LAUNCH_SECOND_ACTIVITY) {
        if(resultCode == Activity.RESULT_OK){
            String result=data.getStringExtra("result");
        }
        if (resultCode == Activity.RESULT_CANCELED) {
            // Write your code if there's no result
        }
    }
} //onActivityResult

Kotlinで2つのアクティビティ間でのデータの受け渡しをより適切に実装するには、アクティビティ間でデータを渡すためのより良い方法'

おすすめ記事