初心者ですが、質問させてください。
KotlinでAndroid Studioを使いクイズアプリのようなものを作っています。
エミュレータでRunすると、「Launch succeeded」となり起動しますが、遷移がうまくいかない画面があります。
具体的には、「問題」画面で、正解すると「正解」画面に、不正解だと「不正解」画面に行くようにしているのですが、正解した時に、「正解」画面に行かずに別の画面になってしまったり、アプリが落ちてしまったりします。
それ以外の画面遷移はできてます。
何度もコードを見直してはいるのですが、自分では解決できなかったため、
わかる方教えてください。
失敗する遷移元と遷移先のコード、あとManifestも貼っておきます。
<遷移元>問題画面
Kotlin
1class AC_Q : AppCompatActivity() { 2 3 val words = mutableListOf( 4 "ahiru", 5 "airon", 6 "aisukurimu", 7 "zubonn" 8 ) 9 10 lateinit var mp:MediaPlayer 11 12 override fun onCreate(savedInstanceState: Bundle?) { 13 super.onCreate(savedInstanceState) 14 setContentView(R.layout.activity_ac_q) 15 words.shuffle() 16 17 val correctAN = (0..5).random() 18 19 var qNum = intent.getIntExtra("Q_COUNT", 0) 20 var score = intent.getIntExtra("RIGHT_ANSWER_COUNT", 0) 21 22 val imageButton1 = findViewById<ImageButton>(R.id.image1) 23 val resId1 = resources.getIdentifier(words[0], "drawable", packageName) 24 imageButton1.setImageResource(resId1) 25 26 val imageButton2 = findViewById<ImageButton>(R.id.image2) 27 val resId2 = resources.getIdentifier(words[1], "drawable", packageName) 28 imageButton2.setImageResource(resId2) 29 30 val imageButton3 = findViewById<ImageButton>(R.id.image3) 31 val resId3 = resources.getIdentifier(words[2], "drawable", packageName) 32 imageButton3.setImageResource(resId3) 33 34 val imageButton4 = findViewById<ImageButton>(R.id.image4) 35 val resId4 = resources.getIdentifier(words[3], "drawable", packageName) 36 imageButton4.setImageResource(resId4) 37 38 val imageButton5 = findViewById<ImageButton>(R.id.image5) 39 val resId5 = resources.getIdentifier(words[4], "drawable", packageName) 40 imageButton5.setImageResource(resId5) 41 42 val imageButton6 = findViewById<ImageButton>(R.id.image6) 43 val resId6 = resources.getIdentifier(words[5], "drawable", packageName) 44 imageButton6.setImageResource(resId6) 45 46 val spButton = findViewById<ImageButton>(R.id.listenButton) 47 val correctAnswer = resources.getIdentifier(words[correctAN], "raw", packageName) 48 mp = MediaPlayer.create(applicationContext, correctAnswer) 49 50 imageButton1.isClickable = false 51 imageButton2.isClickable = false 52 imageButton3.isClickable = false 53 imageButton4.isClickable = false 54 imageButton5.isClickable = false 55 imageButton6.isClickable = false 56 57 spButton.setOnClickListener { 58 mp.start() 59 60 imageButton1.isClickable = true 61 imageButton2.isClickable = true 62 imageButton3.isClickable = true 63 imageButton4.isClickable = true 64 imageButton5.isClickable = true 65 imageButton6.isClickable = true 66 67 qNum++ 68 } 69 70 imageButton1.setOnClickListener { 71 72 if (correctAN.equals(0)){ 73 val intent = Intent(this, AC_Correct::class.java) 74 score++ 75 76 // 渡したいデータとキーを指定する 77 intent.putExtra("qCount", qNum) 78 intent.putExtra("rightAnswerCount", score) 79 80 // 画面切り替え 81 startActivity(intent); 82 finish(); 83 } else { 84 val intent = Intent(this, AC_Incorrect::class.java) 85 86 // 渡したいデータとキーを指定する 87 intent.putExtra("qCount", qNum) 88 intent.putExtra("rightAnswerCount", score) 89 intent.putExtra("Word1", words[0]) 90 intent.putExtra("Word2", words[1]) 91 intent.putExtra("Word3", words[2]) 92 intent.putExtra("Word4", words[3]) 93 intent.putExtra("Word5", words[4]) 94 intent.putExtra("Word6", words[5]) 95 intent.putExtra("Answer", words[correctAN]) 96 97 // 画面切り替え 98 startActivity(intent); 99 finish(); 100 } 101 102 } 103 104 imageButton2.setOnClickListener { 105 if (correctAN.equals(1)){ 106 val intent = Intent(this, AC_Correct::class.java) 107 score++ 108 109 // 渡したいデータとキーを指定する 110 intent.putExtra("qCount", qNum) 111 intent.putExtra("rightAnswerCount", score) 112 113 // 画面切り替え 114 startActivity(intent); 115 finish(); 116 } else { 117 val intent = Intent(this, AC_Incorrect::class.java) 118 119 // 渡したいデータとキーを指定する 120 intent.putExtra("qCount", qNum) 121 intent.putExtra("rightAnswerCount", score) 122 intent.putExtra("Word1", words[0]) 123 intent.putExtra("Word2", words[1]) 124 intent.putExtra("Word3", words[2]) 125 intent.putExtra("Word4", words[3]) 126 intent.putExtra("Word5", words[4]) 127 intent.putExtra("Word6", words[5]) 128 intent.putExtra("Answer", words[correctAN]) 129 130 // 画面切り替え 131 startActivity(intent); 132 finish(); 133 } 134 } 135 136 } 137 138} 139
<遷移先>正解画面
Kotlin
1package com.example.langtherapy 2 3import android.content.Intent 4import androidx.appcompat.app.AppCompatActivity 5import android.os.Bundle 6import android.view.View 7import android.widget.Button 8 9class AC_Correct : AppCompatActivity() { 10 override fun onCreate(savedInstanceState: Bundle?) { 11 super.onCreate(savedInstanceState) 12 setContentView(R.layout.activity_ac_correct) 13 14 val qNum = intent.getIntExtra("qCount", 0) 15 val score = intent.getIntExtra("rightAnswerCount", 0) 16 17 //val toMenu = findViewById<Button>(R.id.toMenu) 18 //toMenu.setOnClickListener (object : View.OnClickListener { 19 // override fun onClick(v: View?) { 20 // val intent = Intent(this@AC_Correct, MainActivity::class.java) 21 // startActivity(intent) 22 //}}) 23 24 val nextQ = findViewById<Button>(R.id.NextQ) 25 26 nextQ.setOnClickListener (object : View.OnClickListener { 27 override fun onClick(v: View?) { 28 29 if (qNum.equals(10)) { 30 31 //3.Intentクラスのオブジェクトを生成。 32 val intent = Intent(this@AC_Correct, AC_Result::class.java) 33 34 intent.putExtra("rightAnswerCount", score) 35 36 //生成したオブジェクトを引数に画面を起動! 37 startActivity(intent) 38 39 } else { 40 //3.Intentクラスのオブジェクトを生成。 41 val intent = Intent(this@AC_Correct, AC_Q::class.java) 42 43 // 渡したいデータとキーを指定する 44 intent.putExtra("Q_COUNT", qNum) 45 intent.putExtra("RIGHT_ANSWER_COUNT", score) 46 47 //生成したオブジェクトを引数に画面を起動! 48 startActivity(intent) 49 } 50 } 51 52 }) 53 } 54
<AndroidManifest>
Kotlin
1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.langtherapy"> 4 5 <application 6 android:allowBackup="true" 7 android:icon="@mipmap/ic_launcher" 8 android:label="@string/app_name" 9 android:roundIcon="@mipmap/ic_launcher_round" 10 android:supportsRtl="true" 11 android:theme="@style/Theme.LangTherapy"> 12 <activity android:name=".AC_Result"></activity> 13 <activity android:name=".AC_Answer" /> 14 <activity android:name=".AC_Incorrect" /> 15 <activity android:name=".AC_Correct" /> 16 <activity android:name=".AC_Q" /> 17 <activity android:name=".MainActivity"> 18 <intent-filter> 19 <action android:name="android.intent.action.MAIN" /> 20 21 <category android:name="android.intent.category.LAUNCHER" /> 22 </intent-filter> 23 </activity> 24 </application> 25 26</manifest>
回答1件
あなたの回答
tips
プレビュー