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

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

新規登録して質問してみよう
ただいま回答率
85.45%
Android Studio

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

554閲覧

putExtraで値を渡す/取得する

makura123

総合スコア3

Android Studio

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2023/01/28 07:49

実現したいこと

putExtraで値を渡して、grtExtraで値を取得してその値によって、画像を決定したいです。
ですが画像が変わらないです。

該当のソースコード

QuestionActivity

1package com.example.e_card 2 3import android.content.Intent 4import androidx.appcompat.app.AppCompatActivity 5import android.os.Bundle 6import android.widget.Button 7import android.widget.ImageButton 8 9class QuestionActivity_4 : AppCompatActivity() { 10 override fun onCreate(savedInstanceState: Bundle?) { 11 super.onCreate(savedInstanceState) 12 setContentView(R.layout.activity_question4) 13 14 // Viewの取得 15 val btn1_4: ImageButton = findViewById(R.id.btn1_4) 16 val btn2_4: ImageButton = findViewById(R.id.btn2_4) 17 val btn3_4: ImageButton = findViewById(R.id.btn3_4) 18 val btn4_4: ImageButton = findViewById(R.id.btn4_4) 19 val btnGroup1_4: Button = findViewById(R.id.btnGroup1_4) 20 val btnGroup2_4: Button = findViewById(R.id.btnGroup2_4) 21 val btnAnswer: Button = findViewById(R.id.btnAnswer) 22 23 //変数宣言 24 var answer1 = 0 25 var answer2 = 0 26 var answer3 = 0 27 var answer4 = 0 28 var kind = 0 29 var answer = 0 30 var badanswer = 0 31 var q_data = 0 32 33 34 //画像のシャッフル 35 val list1 = listOf(R.drawable.ichigo, R.drawable.enpitu, R.drawable.kesigomu, R.drawable.apple) 36 val r = list1.shuffled() 37 38 btn1_4.setImageResource(r[0]) 39 btn2_4.setImageResource(r[1]) 40 btn3_4.setImageResource(r[2]) 41 btn4_4.setImageResource(r[3]) 42 43 44 //画像ボタンを押した際の挙動(果物かそうでないかで格納する値を変更する) 45 btn1_4.setOnClickListener { 46 if ((r[0] == R.drawable.ichigo) or (r[0] == R.drawable.apple)) { 47 answer1 = 1 48 } else { 49 answer1 = 2 50 } 51 } 52 53 btn2_4.setOnClickListener { 54 if ((r[1] == R.drawable.ichigo) or (r[1] == R.drawable.apple)) { 55 answer2 = 1 56 } else { 57 answer2 = 2 58 } 59 } 60 61 btn3_4.setOnClickListener { 62 if ((r[2] == R.drawable.ichigo) or (r[2] == R.drawable.apple)) { 63 answer3 = 1 64 } else { 65 answer3 = 2 66 } 67 } 68 69 btn4_4.setOnClickListener { 70 if ((r[3] == R.drawable.ichigo) or (r[3] == R.drawable.apple)) { 71 answer4 = 1 72 } else { 73 answer4 = 2 74 } 75 } 76 77 78 // グループ1ボタンを押したとき 79 btnGroup1_4.setOnClickListener { 80 answer1 = 0 81 answer2 = 0 82 answer3 = 0 83 answer4 = 0 84 kind = 1 85 86 println("ans1 " + answer1) 87 println("ans2 " + answer2) 88 println("ans3 " + answer3) 89 println("ans4 " + answer4) 90 } 91 92 //グループ2ボタンを押したとき 93 btnGroup2_4.setOnClickListener { 94 answer1 = 0 95 answer2 = 0 96 answer3 = 0 97 answer4 = 0 98 kind = 2 99 100 println("ans1 " + answer1) 101 println("ans2 " + answer2) 102 println("ans3 " + answer3) 103 println("ans4 " + answer4) 104 } 105 106 //解答ボタンが押されたとき 107 btnAnswer.setOnClickListener { 108 println("ans1 " + answer1) 109 println("ans2 " + answer2) 110 println("ans3 " + answer3) 111 println("ans4 " + answer4) 112 113 //グループ1ボタンを押した際の判定 114 if (kind == 1) { 115 if (answer1 == 1) { 116 answer += 1 117 println("正解(果物)1") 118 } 119 120 if (answer1 == 2) { 121 badanswer += 1 122 } 123 124 if (answer2 == 1) { 125 answer += 1 126 println("正解(果物)2") 127 } 128 129 if (answer2 == 2) { 130 badanswer += 1 131 } 132 133 134 if (answer3 == 1) { 135 answer += 1 136 println("正解(果物)3") 137 } 138 139 if (answer3 == 2) { 140 badanswer += 1 141 } 142 143 if (answer4 == 1) { 144 answer += 1 145 println("正解(果物)4") 146 } 147 148 if (answer4 == 2) { 149 badanswer += 1 150 } 151 152 //グループ1に属する画像を2つ選び、それ以外の画像を1つも選んでいないときのみ正解画面へ 153 if (answer == 2 && badanswer == 0) { 154 q_data = 0 155 intent.putExtra("QUESTION_DATA" , q_data) 156 val intent = Intent(this, AnswerActivity_4::class.java) 157 startActivity(intent) 158 } else { 159 q_data = 1 160 intent.putExtra("QUESTION_DATA" , q_data) 161 val intent = Intent(this, AnswerActivity_4::class.java) 162 startActivity(intent) 163 } 164 } 165 166 //グループ2ボタンを押した際の判定 167 if (kind == 2) { 168 if (answer1 == 2) { 169 answer += 1 170 println("正解(文房具)1") 171 } 172 173 if (answer1 == 1) { 174 badanswer += 1 175 } 176 177 if (answer2 == 2) { 178 answer += 1 179 println("正解(文房具)2") 180 } 181 182 if (answer2 == 1) { 183 badanswer += 1 184 } 185 186 187 if (answer3 == 2) { 188 answer += 1 189 println("正解(文房具)3") 190 } 191 192 if (answer3 == 1) { 193 badanswer += 1 194 } 195 196 if (answer4 == 2) { 197 answer += 1 198 println("正解(文房具)4") 199 } 200 201 if (answer4 == 1) { 202 badanswer += 1 203 } 204 205 //グループ2属する画像を2つ選び、それ以外の画像を1つも選んでいないときのみ正解画面へ 206 if (answer == 2 && badanswer == 0) { 207 q_data = 0 208 intent.putExtra("QUESTION_DATA" , q_data) 209 val intent = Intent(this, AnswerActivity_4::class.java) 210 startActivity(intent) 211 } else { 212 q_data = 1 213 intent.putExtra("QUESTION_DATA" , q_data) 214 val intent = Intent(this, AnswerActivity_4::class.java) 215 startActivity(intent) 216 } 217 } 218 } 219 } 220}

AnswrActivity

1package com.example.e_card 2 3import android.content.Intent 4import androidx.appcompat.app.AppCompatActivity 5import android.os.Bundle 6import android.widget.Button 7import android.widget.ImageView 8 9class AnswerActivity_4 : AppCompatActivity() { 10 override fun onCreate(savedInstanceState: Bundle?) { 11 super.onCreate(savedInstanceState) 12 setContentView(R.layout.activity_answer4) 13 14 // Viewの取得 15 val btnMenu1_4 : Button =findViewById(R.id.btnMenu1_4) 16 val btnRetry1_4 : Button =findViewById(R.id.btnRetry1_4) 17 val btnNext1_4 : Button =findViewById(R.id.btnNext1_4) 18 var iv : ImageView = findViewById(R.id.iv) 19 20 //変数の宣言 21 var data = 0 22 23 //値の取得 24 val q_data = intent.getIntExtra("QUESTION_DATA", 0) 25 26 //正解画像と不正解画像の差し替え 27 if(q_data == 0){ 28 iv.setImageResource(R.drawable.maru) 29 } else { 30 iv.setImageResource(R.drawable.batu) 31 } 32 33 // ボタンを押したら次の画面へ 34 btnMenu1_4.setOnClickListener { 35 val intent = Intent(this,MainActivity::class.java) 36 startActivity(intent) 37 } 38 39 btnRetry1_4.setOnClickListener { 40 val intent = Intent(this,QuestionActivity_4::class.java) 41 startActivity(intent) 42 } 43 44 btnNext1_4.setOnClickListener { 45 val intent = Intent(this,QuestionActivity_4::class.java) 46 startActivity(intent) 47 } 48 } 49}

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

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

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

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

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

guest

回答1

0

ベストアンサー

全部見てはいませんが、

kotlin

1 intent.putExtra("QUESTION_DATA" , q_data) 2 val intent = Intent(this, AnswerActivity_4::class.java)

intentに値を設定したに新しく作っていたら、設定した値は消えてしまうと思いますが。

投稿2023/01/28 08:08

TakaiY

総合スコア12834

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

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

makura123

2023/01/28 08:43

後に新しく作るとは,何を作ったらのことなのでしょうか?
TakaiY

2023/01/28 09:06 編集

プログラムは上から順に実行されるのはご存知ですよね。 上の行で、intentにputExtraで値を入れています。 次の行は、intentにIntent()で新しく作ったインテントのインスタンスを代入していますから、上の行でputExtraしたインスタンス(これ、どこで作ったものかわかりませんが)は破棄されています。 ということです。
makura123

2023/01/28 10:22

なるほど,そういうことだったのですね.ではこれはintent.putExtra("QUESTION_DATA" , q_data)とval intent = Intent(this, AnswerActivity_4::class.java)の順初を入れ替えればいいということなのでしょうか?
TakaiY

2023/01/28 10:50 編集

そのとおりです。 あと、ちょっと見ると、新しく開いtaActivity側でもintentの扱いがまちがえていて、たぶん渡した値を受け取れないと思うので、みつけた以下のサイトで受け渡しに必要な処理を確認してみるといいと思います。 https://www.office-matsunaga.biz/android/description.php?id=23
makura123

2023/01/28 12:09

教えていただいたサイトでintent.putExtra("QUESTION_DATA" , q_data)をval intent = Intent(this, AnswerActivity_4::class.java)とstartActivity(intent)の間に書いていたのでそのように変更したらうまく動作しました。私のはバージョンが違ったらしく新しく開いたActivity側では変更を加えなくても大丈夫だったようです。 教えていただいてありがとうございます!本当に助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.45%

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

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

質問する

関連した質問