android 当按下用于检查用户答案的按钮时,应用程序崩溃

enyaitl3  于 12个月前  发布在  Android
关注(0)|答案(2)|浏览(131)

你好,我试图创建一个简单的数字猜测应用程序,如果用户猜测的数字与随机数生成器匹配,textView应该输出“你已经正确地猜到了数字”或没有,但每当我按下按钮,程序崩溃。请帮助
每当我按下按钮时,程序就会崩溃。用户应在userAns变量中输入他们的数字,如果答案正确。应执行answerCorrect变量并显示文本,如果用户猜测的数字是错误的。应执行answerWrong变量。我是初学者,所以请帮助

class MainActivity : AppCompatActivity() {
     override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        //Calling button method
        val button = findViewById<Button>(R.id.guessBtn)
        //Set on click listener for the button
        button.setOnClickListener {
            buttonPressed()
          }
         }
        //Creating button for button pressed
        private fun buttonPressed() {
            //Method to find view from activity_main
            val result = findViewById<TextView>(R.id.result)
            val userAns = findViewById<EditText>(R.id.answer).toString().toInt()
            //This variable will display the answer
            val answerCorrect = "Congrats, you have correctly guessed the number"
            val answerWrong = "Sorry,you have guessed the wrong number"
            //Making random numbers from 1 to 10
            var randomValues = Random.nextInt(1, 10)
            //Adding a condition to check if user answer matches the random answer
            if(userAns == randomValues){
                result.text = answerCorrect
            }
            else{
                result.text = answerWrong
            }

             }
             }

字符串

g6ll5ycj

g6ll5ycj1#

没有堆栈跟踪,我想我可以猜到崩溃是从哪里发生的。
您的buttonPressed方法中有以下行:

val userAns = findViewById<EditText>(R.id.answer).toString().toInt()

字符串
在这里,您正在访问一个EditText视图,并试图将其转换为字符串,然后转换为整数。
我认为你的意思是从你的EditText中获取值,然后将其转换为a。
你可以通过这样做来实现:

val userAnsEditText = findViewById<EditText>(R.id.answer)
 val userAnsText = userAnsEditText.text.toString()
 val userAnsInt = userAnsText.toInt()


这是假设您正在使用正确的id为编辑文本。

nukf8bse

nukf8bse2#

问题在于:

val userAns = findViewById<EditText>(R.id.answer).toString().toInt()

字符串
通过findViewById获取EditText,您应该从中获取文本,然后将其存储在变量中

val userAns = findViewById<EditText>(R.id.answer).text.toString().toInt()


注意事项:每当应用崩溃时,Android Studio都会生成一个堆栈跟踪,您可以在LogCat窗口中看到。它通常包含崩溃的原因以及崩溃发生的确切行号。您应该在任何崩溃发生时查看它,以调试问题。

相关问题