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

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

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

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

Android Studio

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

Q&A

解決済

1回答

5491閲覧

android studioのJAVAのif文での画像の取り扱い

left45

総合スコア14

Java

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

Android Studio

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

0グッド

0クリップ

投稿2016/08/18 11:06

編集2016/08/18 13:20

###前提・実現したいこと
Button nextをタップしてImageview quizにランダムに表示したクイズの画像をタップしたときに答えの画像に変更するアプリを作りたいのですが、下記のソースのonClick(View v)のcase R.id.quizのifとelse ifを反映させるにはどこを直したらいいでしょうか?

###発生している問題・エラーメッセージ
onClick(View v)のcase R.id.quizのifとelse ifが反映されず、どの画像をタップしてもelseになってしまいます

JAVA

1import android.app.Activity; 2import android.content.res.TypedArray; 3import android.graphics.Bitmap; 4import android.graphics.BitmapFactory; 5import android.graphics.drawable.Drawable; 6import android.os.Bundle; 7import android.view.View; 8import android.widget.Button; 9import android.widget.ImageView; 10 11public class MainActivity extends Activity implements View.OnClickListener { 12 13 Button next; 14 ImageView quiz; 15 16 @Override 17 protected void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 setContentView(R.layout.activity_main); 20 21 next = (Button) findViewById(R.id.next); 22 quiz = (ImageView)findViewById(R.id.quiz); 23 24 next.setOnClickListener(this); 25 quiz.setOnClickListener(this); 26 27 TypedArray typedArray = getResources().obtainTypedArray(R.array.question); 28 int rand = (int) (Math.floor(Math.random() * (3 - 1)) + 1); 29 Drawable drawable = typedArray.getDrawable(rand); 30 quiz.setImageDrawable(drawable); 31 } 32 33 public void onClick(View v) { 34 switch(v.getId()){ 35 36 case R.id.next: 37 38 TypedArray typedArray = getResources().obtainTypedArray(R.array.question); 39 int rand = (int) (Math.floor(Math.random() * (3))); 40 Drawable drawable = typedArray.getDrawable(rand); 41 quiz.setImageDrawable(drawable); 42 break; 43 44 case R.id.quiz: 45 int imageID = R.drawable.question00; 46 47 if (imageID == R.drawable.question01) { 48 imageID = R.drawable.answer01; 49 50 } else if (imageID == R.drawable.queation02) { 51 imageID = R.drawable.answer02; 52 53 } else { 54 imageID = R.drawable.answer00; 55 56 } 57 58 Bitmap bmp = BitmapFactory.decodeResource(getResources(), imageID); 59 quiz.setImageBitmap(bmp); 60 quiz.setImageResource(imageID); 61 break; 62 } 63 } 64}

###試したこと
int imageID = ...が間違っていると思い、public class直下に移してint imageID;の形にしてみたのですが結果は変わりませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
Android Studio 2.1.3を使用してアプリを作っています。
Buttonをタップするとランダムでクイズ画像が変わります。

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

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

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

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

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

guest

回答1

0

ベストアンサー

if文の前でこれから比較するimageIDにelseになる値を代入したらelseになるのは当然ですよね。何と何を比較すべきか考え直しましょう。

ソースコードはコード用の記述に修正してください。

投稿2016/08/18 11:23

yona

総合スコア18155

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

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

left45

2016/08/18 12:08

ご回答ありがとうございました。いただいたヒントをもとにもう少し考えてみます。 申し訳ございません。コード用の記述というのがわかりません。どのように記述すればよいのですか?
yona

2016/08/18 12:10

質問の作成、編集画面に</>のようなボタンはありませんか? 使い方はヘルプを見ましょう。
left45

2016/08/18 13:27

できました。ありがとうございました。 もう一つだけご教授願いたいのですが、imageIDの値を複数記述することはできますか?それとも複数記述というのは間違っていますか?
yona

2016/08/18 14:03

正直なにをしたい処理かが伝わらないため、正しいとも正しくないともいえません。 答えの画像は一枚しかないならそもそもif文はいらないですよね。
left45

2016/08/18 14:15

答えの画像は3枚あります。ImageViewにランダムに表示した画像にそれぞれquestion00をタップしたらanswer00、question01をタップしたらanswer01、question02をタップしたらanswer02にしたいです。また、Buttonをタップするとquestion00~question01までがImageViewにランダムに表示され、画像をタップした場合のみ答えが表示されます。ちなみにimageIDの値を複数記述することはできませんでした。
yona

2016/08/18 14:24

だったらif文すらいらないですね。 ・R.array.questionに対応するR.array.answerを作る。 ・int randをフィールド変数にする。 ・クリックされたら上記の2つからdrawableを特定し表示する。
left45

2016/08/18 15:21

ありがとうございます。試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問