请让我知道我如何可以分享我的项目的压缩,你应该觉得喜欢,并有兴趣看到完整的故事
还请注意,建议的职位时,我正在使这一个不符合我的问题
你好!我已经尝试了很多网上资源,似乎不能得到这个想通了。基本上,我有一个基本的应用程序,使一个类,一个奇怪的版本的计算器,以获得窍门的事情。我已经发送了一条消息给教练,只是在等待回应,但我想看看我能找到什么在这里。
问题:我可以在每个文本视图中单击并输入一个数字,但当我选择一个运算符(在本例中为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版本。我最初遇到了编译错误,但能够找到允许编译的现代语法。应用程序运行,但一旦我尝试点击添加,应用程序就崩溃了。
1条答案
按热度按时间z9gpfhce1#
你的类型转换方法是错误的。首先我们需要转换为文本,而不是字符串。你可以试试这个