質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

1580閲覧

画面遷移で2つのデータを渡したい

aruko

総合スコア47

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2021/10/13 23:46

下のコードで、画面遷移でデータの受け渡しができています。

java

1private ActivityResultLauncher<Intent> startForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { 2 switch (result.getResultCode()) { 3 case Activity.RESULT_OK: 4 syokisettei(); 5 Log.d(TAG, "ActivityResultLaundher result=" + result); 6 break; 7 case ResultActivity.RESULT_OWARU: 8 Log.d(TAG, "ActivutyResultLaundher OWARU"); 9 finish(); 10 break; 11 } 12 }); 13----------------------------------------------------------------------- 14startForResult.launch(new Intent(MainActivity.this, ResultActivity.class) 15 .putExtra(ResultActivity.PARAM_SCORE, score)); 16

ここに、”PARAM_SCORE”の他にもう一つデータを渡したいですが、うまくできません。
-------より下の部分を、

java

1startForResult.launch(new Intent(MainActivity.this, ResultActivity.class) 2 .putExtra(ResultActivity.PARAM_SCORE, score)); 3startForResult.launch.putExtra(ResultActivity.SELECT_NUM, select_num);

など、色々試してみましたが、コードエラーになります。"SELECT_NUM"を渡したいです。
正しい書き方を教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

コードを間違って読んでおられるようです。括弧の対応をご確認ください。

java

1startForResult.launch(new Intent(MainActivity.this, ResultActivity.class) 2 .putExtra(ResultActivity.PARAM_SCORE, score));

java

1Intent intent = new Intent(MainActivity.this, ResultActivity.class) 2 .putExtra(ResultActivity.PARAM_SCORE, score); 3startForResult.launch(intent);

という意味です。渡すデータは intent に対し putExtra してください。

投稿2021/10/14 05:04

編集2021/10/14 05:05
jimbe

総合スコア12545

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aruko

2021/10/14 08:08

回答ありがとうございます。 Intent intent = new Intent(MainActivity.this, ResultActivity.class) .putExtra(ResultActivity.PARAM_SCORE, score); startForResult.launch(intent); Intent intent2 = new Intent(MainActivity.this, ResultActivity.class) .putExtra(ResultActivity.SELECT_NUM,select_num); startForResult.launch(intent2); のように書き、 受ける画面では、 int score = getIntent().getIntExtra(PARAM_SCORE, 0); scoreLabel.setText(score + "てん"); int select_num = getIntent().getIntExtra(SELECT_NUM, 0); textView.setText("select_num="+select_num); のようにしたら、エラーはなくなり、SELECT_NUMのデータが引き継がれましたが、今度は、PARAM_SCOREの方がデータが0となり、引き継がれなくなりました。 教えていただきたいです。すみません。
jimbe

2021/10/14 09:06 編集

Intent に入れられる extra は一つだけではありません。二つ以上入れられるので、その区別の為に name パラメータがあります。 個別に書いたほうが分かり易いかもしれません、 Intent intent = new Intent(MainActivity.this, ResultActivity.class); intent.putExtra(ResultActivity.PARAM_SCORE, score); //1つ目 intent.putExtra(ResultActivity.SELECT_NUM,select_num); //2つ目 とすれば、 intent に2つの値が入ります。(順番はどうでも大丈夫です。) もちろんもっとあれば、 putExtra を増やしてそれぞれに名前を付ければ渡せます。配列も受け渡し出来ますし、Serializable を継承していればオブジェクト受け渡し出来ます(この場合名前はそのクラスパスで無ければならないようですが)。 詳細は Intent のドキュメント(https://developer.android.com/reference/android/content/Intent )をご参照ください。 お考えになったコードは、 startForResult.launch(intent) を(一回)すれば Activity が起動するのですから、それを複数回行うことに違和感を感じて頂けると別の方法を考えるきっかけになるかと思います。
aruko

2021/10/16 05:59

intent.putExtra~ を2つ使ってデータを渡すことができました。 ありがとうございました。 じゃんけんゲームを作り進めていますが、新たな疑問点が次々出てくるので、この質問ではここで区切りにしますが、またよろしくお願いします。 とても助かっています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問