android - 我的 Kotlin 代码中非常基本的 textView 问题
问题描述
我刚开始学习 Kotlin,并决定编写一个非常基本的程序。它应该是一个货币转换器,但现在,我只想将我在“editTextEingabe”(“Eingabe”= 德语输入)中输入的数字提供给 textView“textViewAusgabe”。我将在下面链接我的代码,如果有人可以帮助我,我会非常高兴。谢谢!
PS:“editTextEingabe”设置为只允许输入数字和小数,但我不知道这是否会改变任何东西。
更新2:问题是,在按下按钮按钮Berechnen 后,我在editTextEingabe 中输入的十进制数没有出现在textViewAusgabe 中。更简单:我想将我刚刚在 editText 中输入的文本(这里:一个数字)提供给 textView 小部件,但这不起作用。
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var eingabe = findViewById<EditText>(R.id.editTextEingabe)
var eingabeString: String = eingabe.toString()
var ergebnis: String
val buttonBerechnen: Button = findViewById(R.id.buttonBerechnen)
buttonBerechnen.setOnClickListener() {
ergebnis = eingabeString
textViewAusgabe.text = ("$ergebnis")
}
}
}
更新:这是我的 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/textViewAusgabe"
android:layout_width="108dp"
android:layout_height="46dp"
android:layout_marginTop="228dp"
android:background="#4600BCD4"
android:textAlignment="center"
app:layout_constraintStart_toEndOf="@+id/textView3"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/editTextEingabe"
android:layout_width="121dp"
android:layout_height="46dp"
android:layout_marginStart="64dp"
android:layout_marginTop="228dp"
android:background="#4600BCD4"
android:ems="10"
android:hint="$ eingeben"
android:inputType="number|numberDecimal"
android:numeric="integer|decimal"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView3"
android:layout_width="43dp"
android:layout_height="30dp"
android:layout_marginTop="236dp"
android:text="$ = "
android:textAlignment="center"
android:textSize="22sp"
app:layout_constraintStart_toEndOf="@+id/editTextEingabe"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView4"
android:layout_width="57dp"
android:layout_height="27dp"
android:layout_marginTop="236dp"
android:layout_marginEnd="36dp"
android:text="€"
android:textSize="22sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@+id/textViewAusgabe"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/buttonBerechnen"
android:layout_width="116dp"
android:layout_height="69dp"
android:layout_marginStart="144dp"
android:layout_marginBottom="188dp"
android:background="#4600BCD4"
android:text="Berechnen"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>```
解决方案
通过调用eingabe.toString()
,您可以在调用时捕获 的当前输入值eingabe
并将其分配给eingabeString
. 之后的输入值发生的任何事情eingabe
都不会反映在eingabeString
. 因此,当OnClickListener
火灾发生时,您的代码不会从 中获取最新值eingabe
,而是使用保存在eingabeString
. 我认为修复它的一种简单方法是完全摆脱eingabeString
并始终在将输入值eingabe
分配给时引用ergebnis
:
var eingabe = findViewById<EditText>(R.id.editTextEingabe)
var ergebnis: String
buttonBerechnen: Button = findViewById(R.id.buttonBerechnen)
buttonBerechnen.setOnClickListener() {
ergebnis = eingabe.toString()
textViewAusgabe.text = ("$ergebnis")
}
删除编辑
推荐阅读
- python - FLASK: curl: (7) 无法连接到 127.0.0.1 端口 5500: 连接被拒绝
- java - Java中字符串数字的数字逗号分隔符
- python - super().__init__(model, year, position) TypeError: __init__() missing 1 required positional argument: 'position'
- docker - 将默认 0.0.0.0 从 docker 更改为特定
- rust - 创建一个临时的,在仍在使用时被释放
- visual-studio-code - 如何禁用 vscode 的内置建议?
- powershell - Powershell 长度不会显示在 Get-ChildItem 的输出中
- java - 尝试将不干净记录的表验证到具有干净数据的新表时出现 QuerySyntaxException。需要映射实体吗?
- python - 使用 PyBluez 和 PyOBEX 通过蓝牙发送文件
- css - 为什么我不能使用 sass 变量来定义 css 变量的值