Androidアプリ開発

非推奨のstartActivityForResultの対応

この記事は約9分で読めます。
スポンサーリンク

※当サイトではアフィリエイト広告を利用しています

こんにちは、まっさん(@Tera_Msaki)です。

この記事はAndroidスマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Javaでの開発経験、XML構文規則、Androidのアプリ開発経験がある方を対象としています。
Androidのアプリ開発でお役にたててれば、嬉しいです。
(これからAndroidのアプリ開発やJavaでの開発を始めたい方への案内は、記事の最後で紹介します)

この記事のテーマ


非推奨となった onActivityResult の代わりに呼び出したアクティビティの結果を受け取りたい

アクティビティを開始して、結果を受け取る場合、
従来の Activity クラスでは、startActivityForResult と onActivityResult を使用してきましたが、
AndroidX の Activity と Fragment では、Activity Result API を使用する必要があります。

Activity Result API

◎ポイント
従来は呼び元側で Intent に呼び出すアクティビティのクラスをセットして、
startActivityForResult を呼び出して、
呼び先の結果を onActivityResult で受け取る実装でしたが、
onActivityResult によるアクティビティの結果取得は非推奨となったため、
ActivityResultLauncher を使用した実装に変更する必要があります。

対応前

startActivityForResutで呼び出して、
結果を
onActivityResultで受け取る実装

◎Java 対応前コーディング(参考)

	:
    static final int RESULT_ACTIVITY = 1000;
	:
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);
        if (resultCode == RESULT_OK) {
		        //結果を受け取った後の処理
		        :
        }
    }
	:
    Button button = findViewById(R.id.button);
    button.setOnClickListener( v -> {
        Intent intent = new Intent(context, SubActivity.class);
        intent.putExtras(bundle);
        startActivityForResult(intent, RESULT_ACTIVITY);
        finish();
    });
	:

対応後

ActivityResultLauncher.launch で呼び出して、
結果を
ActivityResultContracts.StartActivityForResultで受け取る実装

◎Java 対応後コーディング

	:

    private final ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
            result -> {
                if (result.getResultCode() == Activity.RESULT_OK) {
                    if (result.getData() != null) {
			                  //結果を受け取った後の処理
			                  :
                    }
                }
            });

	:

   Button button = findViewById(R.id.button);
   back.setOnClickListener(v -> {
        Intent intent = new Intent(context, SubActivity.class);
        intent.putExtras(bundle);
        activityResultLauncher.launch(intent);
        finish();
   });

	:

今回は、ここまでです。

Ultrabookを使用していますが、
デスクで作業する時は大型ディスプレイ&ワイヤレスキーボードは必需品ですね♪
選ぶときのポイントは、
数少ないUSBポートを使用しないBluetooth接続と、キーボード配列です。

誤字脱字、意味不明でわかりづらい、
もっと詳しく知りたいなどのご意見は、
このページの最後にある
コメントか、
こちら
から、お願いいたします♪

ポチッとして頂けると、
次のコンテンツを作成する励みになります♪

ブログランキング・にほんブログ村へ

これからAndroidのアプリ開発やJavaでの開発を始めたい方へ

初めての Android のアプリ開発では、アプリケーション開発経験がない方や、
アプリケーション開発経験がある方でも、Java や C# などのオブジェクト指向言語が初めての方は、
書籍などによる独学ではアプリ開発できるようになるには、
かなりの時間がかかりますので、オンラインスクールでの習得をおススメします。

未経験者からシステムエンジニアを目指すのに最適かと、
まずは無料相談から♪

無料でJava言語を学べるのは、かなり魅力的♪
でも、応募資格は35歳以下です、、、
2022年12月から説明会が土曜日開催が追加されていますよ♪
説明会では、希望者に対してプログラミング体験もできるよ♪

未経験者からプログラマーを目指すのに最適かと、
まずは無料カウンセリングから♪

カリキュラムとサポートがしっかりしています、
お得なキャンペーンとかいろいろやっています♪

ゲーム系に強いスクール、UnityやUnrealEngineを習得するのに最適かと、
まずは無料オンライン相談から♪

参考になったら、💛をポッチとしてね♪

コメント欄