#解決したい問題
エミュレーターを起動したときに設定した画像が表示されないので表示できるようにしたいです。
#直面している課題
このプログラムで三回勝ったときor三回負けたときにirasutoyahappy.png or irasutoyabad.pngを表示できるようにしたいのと、"次へ"というボタンをじゃんけんが終わるごとに表示したいです。
情報が足りない場合は載せますのでご指摘ください。
コード///mainactivity/// package com.example.janken import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.preference.PreferenceManager import androidx.core.content.edit import kotlinx.android.synthetic.main.activity_main.* import android.view.View as View1 class MainActivity : AppCompatActivity() { class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // setContentView(R.layout.activity_test3) setContentView(R.layout.activity_main) gu.setOnClickListener { onJankenButtonTapped(it) } choki.setOnClickListener { onJankenButtonTapped(it) } pa.setOnClickListener { onJankenButtonTapped(it) } val pref = PreferenceManager.getDefaultSharedPreferences(this) pref.edit { clear() } } fun onJankenButtonTapped(view: View1?) { val streak = this.intent.getIntExtra("streak", 0) val intent = Intent(this, ResultActivity::class.java) intent.putExtra("MY_HAND", view?.id) intent.putExtra("streak", streak) startActivity(intent) } } }
コード///resultactivity/// package com.example.janken import android.content.Intent import android.os.Bundle import android.preference.PreferenceManager import android.util.Log import androidx.appcompat.app.AppCompatActivity import androidx.core.content.edit import kotlinx.android.synthetic.main.activity_result.* class ResultActivity : AppCompatActivity() { val gu = 0 val choki = 1 val pa = 2 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_result) val id = intent.getIntExtra("MY_HAND", 0) val myHand: Int myHand = when (id) { R.id.gu -> { myHandImage.setImageResource(R.drawable.gu) gu } R.id.choki -> { myHandImage.setImageResource(R.drawable.choki) choki } R.id.pa -> { myHandImage.setImageResource(R.drawable.pa) pa } else -> gu } // コンピュータの手を決める val comHand = getHand() when (comHand) { gu -> comHandImage.setImageResource(R.drawable.com_gu) choki -> comHandImage.setImageResource(R.drawable.com_choki) pa -> comHandImage.setImageResource(R.drawable.com_pa) } // 勝敗を判定する val gameResult = (comHand - myHand + 3) % 3 when (gameResult) { 0 -> resultLabel.setText(R.string.result_draw) // 引き分け 1 -> resultLabel.setText(R.string.result_win) // 勝った場合 2 -> resultLabel.setText(R.string.result_lose) // 負けた場合 } backButton.setOnClickListener { finish() } var streak = intent.getIntExtra("streak", 0) when (gameResult) { 0 -> { resultLabel.setText(R.string.result_draw) // 引き分け // 引き分けの場合はカウントを0に戻す streak = 0 } 1 -> { resultLabel.setText(R.string.result_win) // 勝った場合 // 連敗中の場合は値を0に戻す if(streak < 0){ streak = 0 } streak += 1 } 2 -> { // 連勝中の場合は値を0に戻す if(streak > 0){ streak = 0 } streak -= 1 resultLabel.setText(R.string.result_lose) // 負けた場合 } } // TODO: プログラム終了。何がしたいか、NEXTの遷移先を変えたい?それとも表示を変えたい? if(streak >= 3 || streak <= -3){ Log.d("TEST", "ゲーム終了") } nextButton.setOnClickListener { val intent = Intent(this, MainActivity::class.java) intent.putExtra("streak", streak) // TODO: Activityが積まれ続けるのを回避。画面の構成を考える必要があれば修正する intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) startActivity(intent) } saveData(myHand, comHand ,gameResult) } private fun saveData(myHand: Int, comHand: Int, gameResult: Int) { val pref = PreferenceManager.getDefaultSharedPreferences(this) val gameCount = pref.getInt("GAME_COUNT", 0) val winningStreakCount = pref.getInt("WINNING_STREAK_COUNT", 0) val lastComHand = pref.getInt("LAST_COM_HAND", 0) val lastGameResult = pref.getInt("GAME_RESULT", -1) val edtWinningStreakCount: Int = when { lastGameResult == 2 && gameResult == 2 -> winningStreakCount + 1 else -> 0 } val editor = pref.edit() pref.edit { putInt("GAME_COUNT", gameCount + 1) putInt("WINNING_STREAK_COUNT", edtWinningStreakCount) putInt("LAST_MY_HAND", myHand) putInt("LAST_COM_HAND", comHand) putInt("BEFORE_LAST_COM_HAND", lastComHand) putInt("GAME_RESULT", gameResult) } } private fun getHand(): Int { var hand = (Math.random() * 3).toInt() val pref = PreferenceManager.getDefaultSharedPreferences(this) val gameCount = pref.getInt("GAME_COUNT", 0) val winningStreakCount = pref.getInt("WINNING_STREAK_COUNT", 0) val lastMyHand = pref.getInt("LAST_MY_HAND", 0) val lastComHand = pref.getInt("LAST_COM_HAND", 0) val beforeLastComHand = pref.getInt("BEFORE_LAST_COM_HAND", 0) val gameResult = pref.getInt("GAME_RESULT", -1) if (gameCount == 1) { if (gameResult == 2) { // 前回の勝負が1回目で、コンピュータが勝った場合、 // コンピュータは次に出す手を変える while (lastComHand == hand) { hand = (Math.random() * 3).toInt() } } else if (gameResult == 1) { // 前回の勝負が1回目で、コンピュータが負けた場合 // 相手の出した手に勝つ手を出す hand = (lastMyHand - 1 + 3) % 3 } } else if (winningStreakCount > 0) { if (beforeLastComHand == lastComHand) { // 同じ手で連勝した場合は手を変える while (lastComHand == hand) { hand = (Math.random() * 3).toInt() } } } return hand } }
コード ///activity_main.xml/// <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> <ImageButton android:id="@+id/choki" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginBottom="8dp" android:scaleType="fitCenter" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:srcCompat="@drawable/choki" /> <ImageButton android:id="@+id/pa" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginStart="8dp" android:scaleType="fitCenter" app:layout_constraintStart_toEndOf="@+id/choki" app:layout_constraintTop_toTopOf="@+id/choki" app:srcCompat="@drawable/pa" /> <ImageButton android:id="@+id/gu" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginEnd="8dp" android:scaleType="fitCenter" app:layout_constraintEnd_toStartOf="@+id/choki" app:layout_constraintTop_toTopOf="@+id/choki" app:srcCompat="@drawable/gu" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginBottom="8dp" android:text="@string/janken_text" android:textAppearance="@style/TextAppearance.AppCompat.Large" app:layout_constraintBottom_toTopOf="@+id/choki" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
activity_main.xmlとactivity_result.xmlも貼っていただけると幸いです
また、このコードの他に画面はない認識で良いでしょうか。
どちらもあるのですがどのように貼ったらよいかわからないです、、(コードではなく画像配置の画面のため)
やり方をよろしければご教授ください
activity_result.xmlも貼っていたけますでしょうか。
「"次へ"というボタンをじゃんけんが終わるごとに表示したいです。」
とありますがResultActivityにnextButton.setOnClickListener~とあるので次へボタンは現状でも表示されているのではないでしょうか?
irasutoyahappy.png or irasutoyabad.pngを表示したいのはResultActivityでしょうか。
また、質問は「エミュレーターに設定した画像が表示されない」とありますがコード上で見ると
comHandImage.setImageResource(R.drawable.com_gu)のようにdrawableに画像を入れてそれを表示させているようなのですが、それと同じようにしても表示されないと言うことでしょうか。
以上、よろしくお願いいたします。
字数オーバーで投稿出来ないのでこちらに失礼します。見づらくてすみません。
///activity_result.xml///
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ResultActivity">
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/resultLabel"
android:textAppearance="@style/TextAppearance.AppCompat.Large" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="8dp" android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="parent"
android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="parent"/>
<ImageView
android:layout_width="160dp"
android:layout_height="160dp" app:srcCompat="@drawable/gu"
android:id="@+id/myHandImage" android:scaleType="fitCenter"
android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="parent" android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginStart="8dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginBottom="8dp"
app:layout_constraintBottom_toTopOf="@+id/resultLabel"/>
<ImageView
android:layout_width="130dp"
android:layout_height="200dp" app:srcCompat="@drawable/com_gu"
android:id="@+id/comHandImage" android:scaleType="fitCenter"
android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginEnd="8dp" app:layout_constraintEnd_toEndOf="parent" android:layout_marginStart="8dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/resultLabel"/>
<Button
android:id="@+id/backButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="4dp"
android:text="@string/back_text"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageButton
android:id="@+id/imageButton3"
android:layout_width="100dp"
android:layout_height="100dp"
android:scaleType="fitCenter"
app:srcCompat="@drawable/irasutoyahappy"
tools:layout_editor_absoluteX="34dp"
tools:layout_editor_absoluteY="500dp" />
<ImageButton
android:id="@+id/imageButton4"
android:layout_width="100dp"
android:layout_height="100dp"
android:scaleType="fitCenter"
app:srcCompat="@drawable/irasutoyahappy"
tools:layout_editor_absoluteX="279dp"
tools:layout_editor_absoluteY="500dp" />
<Button
android:id="@+id/nextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="次へ"
tools:layout_editor_absoluteX="293dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
回答1件
あなたの回答
tips
プレビュー