質問者のレベル
プログラミングはちょこっとスクリプトをかけるぐらい(主にbash)で素人です。
何をやってるときに問題にぶつかったか
以下URLの、「ステップ 2: clickLemonImage() を実装する」の項。
https://developer.android.com/codelabs/basic-android-kotlin-training-project-lemonade?hl=ja#4
前提・実現したいこと
現在のlemonadeStateの状態に応じて処理を分けたい。
日本語で書くなら、
changeButton.setOnClickListenerが実行されたとき、
lemonadeState が、SELECTの時、lemonadeState を SQUEEZEに変える。
lemonadeState が、SQUEEZEの時、lemonadeState を DRINKに変える。
(以下省略)
という処理を実現したい。
何かしらヒントをお授けください。
該当のソースコード
Kotlin
1 private val SELECT = "select" 2 private val SQUEEZE = "squeeze" 3 private val DRINK = "drink" 4 private val RESTART = "restart" 5 private var lemonadeState = "select" 6 7 private val changeButton:ImageView = findViewById(R.id.lemonTree) 8 private val textBox:TextView = findViewById(R.id.textView) 9 10 override fun onCreate(savedInstanceState: Bundle?) { 11 super.onCreate(savedInstanceState) 12 setContentView(R.layout.activity_main) 13 changeButton.setOnClickListener { clickLemonImage() } 14 } 15 16 private fun clickLemonImage() { 17 18 when (lemonadeState) { 19 SELECT -> { 20 lemonadeState = SQUEEZE 21 } 22 SQUEEZE -> { 23 lemonadeState = DRINK 24 } 25 DRINK-> { 26 lemonadeState = RESTART 27 28 } 29 RESTART -> { 30 lemonadeState = SELECT 31 32 } 33 34 } 35 } 36}
試したこと
以下のコメント行に「何かしらlemonadeStateを変える処理」というのを入れれば良い
ということまでは考え付きました。
数字を使えるなら、以下の、 //「何かしらlemonadeStateを変える処理」、counter += 1のような処理を入れれば
「changeButton.setOnClickListener」が実行されるたび、画像が変わる(変えられる)ことはわかりました。
しかし、これを
「changeButton.setOnClickListenerが実行される際ののlemonadeStateの状態により、処理を分ける」という処理が
正直皆目見当つきません。
数字を使わない理由は、上記URLに、
状態には SELECT、SQUEEZE、DRINK、RESTART の 4 つがあり、現在の状態は lemonadeState 変数によって表されます。
このメソッドでは、状態ごとに異なる処理を行う必要があります。
とあり、数字で無く「文字」で状態を表せ
と読み取れる文があったためです。
Kotlin
1private fun clickLemonImage() { 2 //「何かしらlemonadeStateを変える処理」 3 when (lemonadeState) {
補足情報(FW/ツールのバージョンなど)
プロジェクトの作成環境は、Empty Activityで、Minimum SDKはAPI19を指定しております。
回答1件
あなたの回答
tips
プレビュー