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

问题描述 投票:0回答:1

您好,我正在尝试创建一个简单的数字猜测器应用程序,如果用户猜测的数字与随机数生成器匹配,则 textView 应该输出“您已经正确猜对了数字”,但每当我按下按钮时,程序就会崩溃。请帮忙

每当我按下按钮时,程序就会崩溃。用户应该在 userAns 变量中输入他们的号码,以及答案是否正确。如果用户猜测的数字是错误的,则应执行answerCorrect 变量并显示文本。答案错误的变量应该被执行。我是初学者所以请帮忙

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
            }

             }
             }
android kotlin android-edittext findviewbyid
1个回答
0
投票

如果没有堆栈跟踪,我想我可以猜测崩溃是从哪里发生的。

您的 buttonPressed 方法中有以下行:

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

在这里,您正在访问一个 EditText 视图,并尝试将其转换为字符串,然后转换为整数。

我认为你的意思是从 EditText 中获取值,然后将其转换为整数。

您可以通过这样做来实现这一点:

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

这是假设您为 EditText 使用正确的 id。

© www.soinside.com 2019 - 2024. All rights reserved.