在第一个Kotlin/Android应用程序中单击添加按钮时发生致命错误和崩溃

f45qwnt8  于 2023-03-30  发布在  Kotlin
关注(0)|答案(1)|浏览(173)

请让我知道我如何可以分享我的项目的压缩,你应该觉得喜欢,并有兴趣看到完整的故事
还请注意,建议的职位时,我正在使这一个不符合我的问题
你好!我已经尝试了很多网上资源,似乎不能得到这个想通了。基本上,我有一个基本的应用程序,使一个类,一个奇怪的版本的计算器,以获得窍门的事情。我已经发送了一条消息给教练,只是在等待回应,但我想看看我能找到什么在这里。
问题:我可以在每个文本视图中单击并输入一个数字,但当我选择一个运算符(在本例中为add)时,整个应用程序就会崩溃。
MainActivity.kt代码是:

package com.example.lab01

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.TextView

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // variable declarations
        val n1=(findViewById<View>(R.id.Number1))
        val n2=(findViewById<View>(R.id.Number2))
        val result:TextView = findViewById(R.id.result_view)
        val add:Button = findViewById(R.id.button_add)
        // val subtract:Button = findViewById(R.id.button_subtract)
        // val multiply:Button = findViewById(R.id.button_multiply)
        // val divide:Button = findViewById(R.id.button_divide)

        // operator functions
        add.setOnClickListener {
            val sumResult = n1.toString().toDouble() + n2.toString().toDouble()
            result.text = sumResult.toString()
        }
    }
}

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=".MainActivity">

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Calculator App"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.148" />

    <EditText
        android:id="@+id/Number1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="100dp"
        android:layout_marginTop="75dp"
        android:ems="10"
        android:hint="Enter number 1"
        android:inputType="numberDecimal"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView2" />

    <EditText
        android:id="@+id/Number2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="100dp"
        android:layout_marginTop="30dp"
        android:ems="10"
        android:hint="Enter number 2"
        android:inputType="numberDecimal"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/Number1" />

    <Button
        android:id="@+id/button_divide"
        android:layout_width="99dp"
        android:layout_height="52dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="18dp"
        android:text="/"
        app:layout_constraintStart_toEndOf="@+id/button_multiply"
        app:layout_constraintTop_toBottomOf="@+id/button_subtract" />

    <Button
        android:id="@+id/button_multiply"
        android:layout_width="96dp"
        android:layout_height="52dp"
        android:layout_marginStart="100dp"
        android:layout_marginTop="18dp"
        android:text="*"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button_subtract" />

    <Button
        android:id="@+id/button_add"
        android:layout_width="99dp"
        android:layout_height="52dp"
        android:layout_marginStart="100dp"
        android:layout_marginTop="40dp"
        android:text="+"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/Number2" />

    <Button
        android:id="@+id/button_subtract"
        android:layout_width="101dp"
        android:layout_height="51dp"
        android:layout_marginStart="15dp"
        android:layout_marginTop="40dp"
        android:text="-"
        app:layout_constraintStart_toEndOf="@+id/button_add"
        app:layout_constraintTop_toBottomOf="@+id/Number2" />

    <TextView
        android:id="@+id/result_view"
        android:layout_width="205dp"
        android:layout_height="73dp"
        android:layout_marginStart="100dp"
        android:layout_marginBottom="120dp"
        android:text="The Result"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

错误是什么?当我选择add运算符(我唯一编写的rn)时,我得到了这个:

2023-03-27 11:08:42.127  4229-4229  AndroidRuntime          com.example.lab01                    D  Shutting down VM
2023-03-27 11:08:42.134  4229-4229  AndroidRuntime          com.example.lab01                    E  FATAL EXCEPTION: main
                                                                                                    Process: com.example.lab01, PID: 4229
                                                                                                    java.lang.NumberFormatException: For input string: "androidx.appcompat.widget.AppCompatEditText{1c90a17 VFED..CL. ........ 275,535-855,659 #7f080007 app:id/Number1 aid=1073741824}"
                                                                                                        at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
                                                                                                        at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
                                                                                                        at java.lang.Double.parseDouble(Double.java:538)
                                                                                                        at com.example.lab01.MainActivity.onCreate$lambda$0(MainActivity.kt:25)
                                                                                                        at com.example.lab01.MainActivity.$r8$lambda$ojjibajGvJUUhz9EAknQBAVC96s(Unknown Source:0)
                                                                                                        at com.example.lab01.MainActivity$$ExternalSyntheticLambda0.onClick(Unknown Source:6)
                                                                                                        at android.view.View.performClick(View.java:7448)
                                                                                                        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1131)
                                                                                                        at android.view.View.performClickInternal(View.java:7425)
                                                                                                        at android.view.View.access$3600(View.java:810)
                                                                                                        at android.view.View$PerformClick.run(View.java:28305)
                                                                                                        at android.os.Handler.handleCallback(Handler.java:938)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                                        at android.os.Looper.loop(Looper.java:223)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:7656)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

我很感激你能给予我的任何帮助。谢谢!
当我点击添加按钮(到目前为止我写的唯一函数)时,整个程序崩溃了。我试着在谷歌上搜索了很多不同的东西,但我就是找不到任何针对我的问题的东西。似乎有很多不同语法的Kotlin版本。我最初遇到了编译错误,但能够找到允许编译的现代语法。应用程序运行,但一旦我尝试点击添加,应用程序就崩溃了。

z9gpfhce

z9gpfhce1#

你的类型转换方法是错误的。首先我们需要转换为文本,而不是字符串。你可以试试这个

add.setOnClickListener {
        val sumResult = n1.text.toString().toDouble() + 
        n2.text.toString().toDouble()
        result.text = sumResult.toString()
    }

相关问题